由于与实际问题无关的原因,我需要通过 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: 无法打开 title: 没有那个文件
...(继续)
有什么建议么?