代码之家  ›  专栏  ›  技术社区  ›  IPSDSILVA

有没有一种方法可以将一个包含多个变量和字符串的变量从PHP传递到Python?

  •  0
  • IPSDSILVA  · 技术社区  · 4 年前

    我有一个Python脚本,它根据HTML页面中的用户输入向我自己发送电子邮件。PHP脚本从HTML输入中提取信息,并将其发送到Python文件,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]
    

    此外,我确实有 import sys import os 在我的Python的顶部。

    我不知道为什么这行不通,但我会接受任何帮助。提前感谢!

    0 回复  |  直到 4 年前
        1
  •  1
  •   John Gordon    4 年前

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

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

    然后在Python脚本中, argv[1] 只是 Hello ,以及 World 是在 argv[2] .

    要解决这个问题,请在周围加上单引号 $foo 在shell命令中:

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

    然后Python脚本将在 argv[1] .