Php和unix grep反斜杠不起作用

时间:2014-06-12 13:59:57

标签: php regex unix sed

我有一个相当简单的问题,我似乎无法找到解决方案。我想在我网站上的目录中的所有文件中删除包含特定字符串的行。这个字符串包含双引号。我一直试图找到一个使用反斜杠的解决方案,但它不起作用。

我要替换的字符串是:session_register("c$key");

我正在使用这个php和unix代码:

$command = "sed -i '/session_register(\"c$key\")/d;' ./*";
$output = shell_exec($command);

我想删除此行,因为session_register已过时。 它没有做任何事情,但没有给我一个错误。有什么问题或者我应该如何反斜杠?

非常感谢!

1 个答案:

答案 0 :(得分:1)

你需要加倍转义$,因为$是特殊的正则表达式符号意味着输入结束。对$command字符串赋值也使用单引号而不是双引号。

试试这个:

$command = 'sed -i.bak \'/session_register("c\\$key")/d;\' ./*';
$output = shell_exec($command);