我需要替换这些标记之间的内容并保留标记
$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。 想法?
答案 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);