【问题标题】:Is There A Way To Pass One Variable Containing Multiple Variables And Strings In It From PHP To Python?有没有办法将一个包含多个变量和字符串的变量从 PHP 传递到 Python?
【发布时间】:2020-06-12 00:20:11
【问题描述】:

我有一个 Python 脚本,它根据 HTML 页面中的用户输入向我自己发送电子邮件。 PHP 脚本从 HTML 输入中提取信息,并将它们发送到 Python 文件,该文件会发送一封包含用户输入的电子邮件。唯一的问题是,当我将信息从 PHP 传输到 Python 时,我无法这样做,因为变量包含多个变量、字符串或两者兼有。澄清:

一个我可以毫无问题地发送的变量:

$foo = "Hello World!";

我无法传输的变量:

$foo = "Hello World!".$myVar;  // $myVar is defined elsewhere

我像这样从 PHP 中“导出”变量:

$result = shell_exec("<myPathToPython>/python3 Foo.py $foo"); // $foo is the variable that I want to transmit

我在 Python 中收到了这样的变量:

message = sys.argv[1]

此外,我的 Python 顶部确实有 import sysimport os

我不确定为什么这不起作用,但我会接受任何帮助。提前致谢!

【问题讨论】:

  • 向我们展示 PHP 脚本如何调用 python 脚本。
  • 序列化数据,例如:json_encode()
  • @JohnGordon 我会编辑它。
  • argv[1] 的 python 脚本是什么?是字面值$foo吗?
  • @JohnGordon 非常感谢。我感谢你的帮助。引用'$foo' 帮助很大,我现在可以更轻松地发送信息,而无需 JSON 的帮助。如果您可以发布引用参数的答案,我可以接受。谢谢!另外,当我得到argv[1] 时,我得到一个字符串,即"Hello World! Test!"(因为$myVar 的值是Test!

标签: python php html email variables


【解决方案1】:

如果$foo 包含空格(例如"Hello World"),那么你的shell 命令实质上会变成这样:

$result = shell_exec("<myPathToPython>/python3 Foo.py Hello World");

那么在 Python 脚本中,argv[1] 就是Hello,而Worldargv[2] 中。

要解决此问题,请在 shell 命令中将 $foo 括起来:

$result = shell_exec("<myPathToPython>/python3 Foo.py '$foo'");

然后 Python 脚本将接收argv[1] 中的整个值。

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 2020-09-22
    • 2014-10-07
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2023-04-02
    • 2020-04-28
    相关资源
    最近更新 更多