Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php和unix grep反斜杠不起作用_Php_Regex_Unix_Sed - Fatal编程技术网

Php和unix grep反斜杠不起作用

Php和unix grep反斜杠不起作用,php,regex,unix,sed,Php,Regex,Unix,Sed,我有一个相当简单的问题,我似乎找不到解决办法。我想删除我网站上目录中所有文件中包含特定字符串的行。但该字符串包含双引号。我一直在尝试使用反斜杠寻找解决方案,但它不起作用 我要替换的字符串是:session_register(“c$key”) 我正在使用以下php和unix代码: $command = "sed -i '/session_register(\"c$key\")/d;' ./*"; $output = shell_exec($command); 我想删除此行,因为会话注册已过期。

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

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

我正在使用以下php和unix代码:

$command = "sed -i '/session_register(\"c$key\")/d;' ./*";
$output = shell_exec($command);
我想删除此行,因为会话注册已过期。 它没有做任何事情,但不会给我一个错误。问题是什么?我应该如何反斜杠


非常感谢

您还需要双重转义
$
,因为
$
是特殊的正则表达式符号,表示输入结束。对于
$命令
字符串分配,也使用单引号而不是双引号

试试这个:

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

您会遇到什么错误?没有错误,只是什么都没有发生。正确的“未切换”版本是什么(即,当您在命令行中键入它时可以工作的版本)?类似于sed-i'/session\u寄存器(“cfoo”)/d./*
?session\u寄存器(“c$key”);是我想要删除的字符串吗?如果您尝试直接在shell上运行sed命令,看看它是否有效?