php替换标签之间的内容并保留它们

时间:2012-06-14 14:33:48

标签: php preg-replace

我需要替换这些标记之间的内容并保留标记

$source="Original string <p>bal bla bla</p>**** <!--{date}-->REPLACE ME!!!<!--/{date}-->"
$replaceText = '2012-06-14';
$start = '<!--{date}-->';
$end = '<!--/{date}-->';

preg_replace('#('.preg_quote($start).')(.*)('.preg_quote($end).')#si', '$1'.$replaceText.'$3', $source);

结果是:

"Original string <p>bal bla bla</p>**** 012-06-14<!--/{date}-->"

缺少开始标记和2。 想法?

2 个答案:

答案 0 :(得分:3)

那是因为这样做你得到: '$12012-06-14$3'作为替代品。所以我猜它是$12而不是$1

您可能希望测试文档${1}中的内容而不是$1

答案 1 :(得分:1)

在var和replaceText

之间加一个空格

喜欢那个

preg_replace('#('.preg_quote($start).')(.*)('.preg_quote($end).')#si', '$1 '.$replaceText.' $3', $source);