“sed命令”的另一种变体是“单引号/双引号”。问题

时间:2014-04-09 17:38:55

标签: php sed escaping

以下两行PHP工作正常:

exec("/bin/sed --in-place 's/_SINGLE_QUOTE_HERE_/SQ/' " . $fileSpec);
exec("/bin/sed --in-place 's/_DOUBLE_QUOTE_HERE_/DQ/' " . $fileSpec);

因此,如果文件包含以下文本:

I am 6_SINGLE_QUOTE_HERE_ 4_DOUBLE_QUOTE_HERE_ tall.

执行上述代码后,该文件包含:

I am 6SQ 4DQ tall.

但是,显然,我希望:

I am 6' 4" tall.

问题是,单/双引号本身搞砸了。

我试过这个,但它失败了:

exec("/bin/sed --in-place 's/_SINGLE_QUOTE_HERE_/\x27/' " . $fileSpec);
exec("/bin/sed --in-place 's/_DOUBLE_QUOTE_HERE_/\x22/' " . $fileSpec);

我也试过这个,但也失败了:

exec("/bin/sed --in-place 's/_SINGLE_QUOTE_HERE_/\'/' " . $fileSpec);
exec("/bin/sed --in-place 's/_DOUBLE_QUOTE_HERE_/\"/' " . $fileSpec);

提前感谢您解决此问题。

编辑:以下添加。

好的,这适用于单引号:

exec("/bin/sed --in-place 's/_SINGLE_QUOTE_HERE_/'\''/g' " . $program);

仍然存在双引号的问题。这不起作用:

exec("/bin/sed --in-place 's/_DOUBLE_QUOTE_HERE_/'\"'/g' " . $program);

0 个答案:

没有答案