【发布时间】:2011-02-15 19:30:39
【问题描述】:
关注此question
$test = "sed -n '1h;1!H;\${;g;s/<item=\"".$name.".*</\item>/".trim(xml)."/g;p;}' ".$file;
exec($test,$cmdresult);
执行此命令以查找具有指定名称的所有 xml 节点,并将其作为变量传递。这里唯一的问题是匹配超出了最初的</item> 到下一个节点,最后到最后一个</item>。
如何使这个不贪心?
【问题讨论】:
-
您是否尝试过在 shell 中使用 sed(而不是通过 PHP 调用)?您显然在这里有一些错误,例如
</\item>而不是<\/item>。 Sed 会通知你。 -
我知道你说你有一个大文件要处理,但你真的应该使用 PHP XML 库。
-
@Dennis simplexml in php 不允许我替换节点
-
一定会one of these。
标签: regex sed non-greedy