python+php+变量传递,将多个Python变量传递给PHP

HTML

这是一个接受用户输入(url)的表单:

Go

PHP(Laravel)

此控制器将用户输入(url)的值存储到变量中,以便在python脚本中使用。

$url = Input::get('url');

$name = shell_exec('path/to/python ' . base_path() . '/test.py ' . $url);

return $name;

Python

脚本传递用户输入的内容并在正斜杠后显示文本并显示它。

url = sys.argv[1]

name = url.split('/')[-1]

print(name)

回到PHP,它返回Python脚本中执行的值。如果用户输入url:http://example.com/file.png,它将成功返回字符串file.png

关于这一切的一切都有效,但我意识到我限制自己,因为shell_exec命令只会粘贴从python脚本返回的字符串。如果我想要返回多个变量,我该怎么办?

有问题的Python

url = sys.argv[1]

name = url.split('/')[-1]

test ="pass this text too!"

# ? what goes here ?

所以HTML页面现在应该返回file.png和pass this text too!

我是否需要在python中返回一个数组或json,然后在PHP中提取数组/ json?

注意:我知道这些示例中的安全漏洞/注入,这些是我的实际代码的精简版本。

对你提出的问题并不完全是一个答案,但如果这是一个复杂性较小的项目,我建议使用数据库来处理各个进程之间的通信。如果一台机器都在一台机器上,那么SQLite的开销非常小,可以创造奇迹。

@KalZekdor你能详细说明你的意思吗? db存储什么?

取决于您的特定应用。例如,如果用户通过php上传需要由python使用的图像,而不是将路径作为python arg传递给图像,则存储图像(路径或数据),上传者,上传日期,作业状态然后,python脚本可以在db中运行未处理的作业并对它们进行操作。

正如我所说,这并不是你所要求的答案,但值得研究(除非这是一个快速的一次性脚本,在这种情况下它有点矫枉过正)。您可以以更健壮的方式构建应用程序。通过命令行参数来回传递数据是一种快速而肮脏的解决方案;易于实施,但容易破损,维护噩梦。

您可以返回一个数组,但要确保元素不包含分隔符。

喜欢print(','.join(name, test))。

或者您可以像json.dumps([name, test])一样编码为json,然后在PHP中解析json。 当然,第二个更好。

我投了票,因为我错过了JSON !! 我每天都在使用它。 对我感到羞耻:D

@HalayemAnis对你感到羞耻:D

在这种情况下,您的Python脚本必须返回格式化的响应,PHP脚本可以正确解析并使用其值确定变量

例如,你的python代码必须返回类似的东西:

file_name=file.png;file_extension=png;creation_date=1/1/2015;

在你的PHP代码之后,你做了必要的东西

$varValues = explode(";", $PythonResult);

foreach($varValues as $vv) {

$temp = explode("=", $vv);

print 'Parameter : ' . $temp[0] . ' value : ' . $temp[1] . '
';

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值