2011-02-15 41 views
1

到运行的sed做多的搜索,并与下面的字符串执行多的sed在PHP中:我试图逃避问题

$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

您可能会发现`<<< HEREDOC`语法最终会变得更人性化。 http://ca.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc – dnagirl 2011-02-15 18:24:59

回答

3

您需要转义${}中的$

$test = "sed -n '1h;1!H;\${;g;s/iname=\"".$name.".*item>/".trim(xml)."/g;p;}' ".$file; 
exec($test,$cmdresult); 

但是,为了让人类阅读你的代码,你应该真的把字符串分开。通过连接其他字符串sprintf或HEREDOC创建它。

+0

+1,因为它比我的回答更完整。 – 2011-02-16 08:22:22

0

可能是登录在$test变量内使得PHP认为应该扩展另一个变量。

尝试转义$字符(\$),然后查看relevant PHP strings doc