我正在尝试运行sed进行多行搜索并替换为以下字符串
$test = "sed -n '1h;1!H;${;g;s/iname=\"".$name.".*item>/".trim(xml)."/g;p;}' ".$file;
exec($test,$cmdresult);
sed是选择,因为要搜索的字符串超过10 MB。
在执行期间,编译器会发出警告
PHP Parse error: syntax error, unexpected ';'
我该如何解决这个问题?
答案 0 :(得分:3)
您需要转义$
中的${}
。
$test = "sed -n '1h;1!H;\${;g;s/iname=\"".$name.".*item>/".trim(xml)."/g;p;}' ".$file;
exec($test,$cmdresult);
但是,为了让人们阅读您的代码,您应该真正地分割字符串。通过连接其他字符串sprintf
或HEREDOC来创建它。
答案 1 :(得分:0)
$
变量中的$test
符号可能会让PHP认为还有另一个应该扩展的变量。
尝试转义$
字符(\$
),并查看relevant PHP strings doc。