我在php中使用以下代码行来执行python屏幕。它接收来自html textarea的文本,其中包含换行符
$string = $_POST['textarea']; // e.g. "String 1\n string 2\n"
$command = escapeshellcmd("python script.py -c \"$string\"");
执行script.py时,只有"字符串1"被python脚本接收为arg。请问是否有任何本地方式让我传递字符串?
如果您认为这是一个重复的问题,请告诉我在哪里可以找到这个答案。我一直在stackoverflow上搜索它。
答案 0 :(得分:0)
我设法找到了这样做的方法。
在php文件中,在调用escapeshellcmd
之前用'\ n'替换所有换行符$string = trim(preg_replace('/[\r\n]+/', '\n', $_POST['textarea']));
// For a string like:
// abcd
// defg
// will become
// abde\\ndefg
由于新行char'\ n'已被带有前置斜杠的php escapeshellcmd转义。 shell将能够处理字符串,python将接收 abde \ ndefg 作为参数之一。 接下来在python代码中,我们只需使用下面的代码撤消转义
arg = sys.argv[1].decode('string_escape')
我希望上述解决方案能够帮助那些面临类似问题的人。 =)