php python混合编程_php调用python脚本

本文档详述了一位开发者在使用PHP调用Python脚本时遇到的路径修正、换行符问题以及中文编码问题。通过修改PHP代码中的路径,使用反斜杠实现换行,并在Python脚本头部添加UTF-8编码声明,成功解决了脚本执行和中文显示的问题。此外,还展示了如何调试和测试Python的迭代语句以及PHP对中文的支持情况。

主要参考两篇文章

PHP中的换行详解

利用PHP调试Python

Python小窥 - 写给Python的入门者

这两篇文章结合起来进行测试,主要过程如下

cd /var/www/htmlmkdirscript

nano script/test.py

#粘贴代码

nano test002.php

#粘贴代码

期间主要遇到的问题有

php文件里面的路径/script/test.py,改为script/test.py,作者显然在根目录添加的目录

php换行的实现,想实现,本来用\n,结果失败,于是用
,搞定,实现结果如下图

752348-20161225161804651-571031805.png

继续修改,发现对于连续迭代语句无法正常打印数据,具体还没查询原因,猜测是由于python本身报错,可以本地运行脚本测试。

另外的测试是中文支持情况,发现中文的时候网页全部空白,显然就是报错了,本来以为是php对中文支持的不好,于是修改了,添加了中文支持,发现情况依旧,于是本地测试python的中文支持情况,发现不支持,按照报错信息

Non-ASCII character '\xe8' in file test.py on line 9, but no encodi

查询解决方法。原来需要开头添加utf8的支持,添加行注释搞定,最终的php脚本内容为

<?php#header("Content-type: text/html; charset=utf-8");

$output = shell_exec('python script/test.py');$array = explode(',', $output);foreach ($array as $value) {#echo "\n";

echo $value;echo "
";

}?>

python内容为

#coding=utf-8

print 'this is a Python program with PHP,'

#print '\n'

print "22,"

print "21,"

print "26,"

print "22,"

print "21,"

print 'Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five $

print '要求:打印1到100,遇到3的倍数,只打印“Fizz”,遇到5的倍数,打印“Buzz”,同时遇到3,5的倍数,打印“FizzBuzz”,'

for x in range(1,101):print"Fizz"[x%3*4:]+"Buzz"[x%5*4:]orxprint ","

for x in range(1,11):print"qiangge_is_god"[x%3*14:]+"i_can't_believe_it"[x%5*18:]orxprint ","False=TrueifFalse:print "Hello"

else:print "World"

print ','

最后显示的效果图

752348-20161225171244511-133633947.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值