我花了几个小时试图解决这个问题。我正在使用 shell_exec
(是的,我知道与此相关的安全问题)并使用 sed 来更改文件中的文本。
问题是无论我尝试什么,我似乎都无法输出引号仍然完整的文本。我已经尝试了几乎每一种单引号和双引号的组合来逃避它,但它没有奏效。经过几个小时的尝试,我决定在这里问这个问题。
代码在 PHP 文件中:
shell_exec('sed -i "s/patterntoreplace/yolo(word,"Hello Everyone", word)/" test.txt
问题是文件以:
结尾yolo(word,Hello Everyone, word)
引用不断被解析,我绝对需要它们。我尝试了各种方法,例如将它放入变量中,使用 escapeshellarg
和 escapeshellcmd
并尝试了单引号和双引号的各种组合,但我仍然无法让它工作.
这让我非常沮丧,因为这是我项目的最后一部分,它应该很简单,但我无法在没有引号的情况下运行我的程序。真是气死人了。
有人可以告诉我在该命令中要替换什么以使引号正确输出吗?
最佳答案
这应该有效:
$arg = 's/patterntoreplace/yolo(word,"Hello Everyone", word)/';
$cmd = 'sed -i '.escapeshellarg($arg).' test.txt';
shell_exec($cmd);
关于php - 双引号在 PHP 的 shell_exec 和 sed 中不断被解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21516585/