gpt4 book ai didi

php - 通过 php system() 传递多行 html 作为参数

转载 作者:搜寻专家 更新时间:2023-10-31 22:11:56 25 4
gpt4 key购买 nike

由于与实际问题无关的原因,需要通过PHP调用外部脚本对一个完整的html文档进行字符串替换。替换字符串和源代码需要通过 php exec() 传递给这个脚本。对于这个例子,我使用了一个简单的 python 脚本来接管替换。

PHP 脚本如下所示:

$source = file_get_contents("somehtmlfile.html");
$replaceString = "Some text in the HTML doc";
$replaceTo = "Some other text";
$parsedString = system("python replace.py $replaceString $replaceTo $source", $retval);
print ("Done:" .$mystring);

然后 Python 脚本将执行以下操作:

import sys
import string
dataFrom = sys.argv[1];
dataTo = sys.argv[2];
dataSourceCode = sys.argv[3];
rep = dataSourceCode.replace(dataFrom, dataTo);
print rep;

问题是我无法将完整的 html 源作为参数传递给 shell,至少不能以上面显示的方式传递。据我了解,当 html 代码被传递到 shell 时,它将某些部分解释为命令(我想这里多行可能是一个问题)。

我从脚本中收到的输出:

sh: 无法打开 !DOCTYPE: 没有那个文件sh: 无法打开 html: 没有那个文件sh: 无法打开 head: 没有那个文件sh: 无法打开标题: 没有那个文件

...(继续)

有什么建议吗?

最佳答案

它不起作用,因为您作为参数传递的 html 文本中有空格和引号,因此它被视为多个参数。要解决这个问题,您必须在参数周围加上引号。
正确的代码是 $parsedString = system("python replace.py '$replaceString' '$replaceTo' '$source'", $retval);

关于php - 通过 php system() 传递多行 html 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11984917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com