【问题标题】:Executing multiline sed in php: escaping issues在 php 中执行多行 sed:转义问题
【发布时间】:2011-06-27 19:45:43
【问题描述】:

我正在尝试运行 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 ';' 

我该如何解决这个问题?

【问题讨论】:

标签: php regex parsing sed


【解决方案1】:

你需要转义${}中的$

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

但是,为了让人们阅读您的代码,您应该真正拆分字符串。通过连接其他字符串、sprintf 或 HEREDOC 来创建它。

【讨论】:

    【解决方案2】:

    可能$test 变量内的$ 符号让 PHP 认为还有另一个变量需要扩展。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 2011-08-08
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多