如何在php中将包含换行符的字符串传递给python

时间:2016-08-29 09:50:20

标签: php python

我在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上搜索它。

1 个答案:

答案 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')

我希望上述解决方案能够帮助那些面临类似问题的人。 =)