替换两个标签之间的一切

www*_*com 4 php regex

可能重复:
使用PHP在两点之间插入字符串

我怎么能取代之间的一切<!-- START NOT PRINT --><!-- END NO PRINT -->

以下代码运行良好,但只要有两个或更多实例,就会出错.

然后它替换第一个标签和最后一个标签之间的所有内容.但它应该删除属于一起的两个标签之间的所有内容.这是我的代码:

$pageData['raw_content'] = preg_replace('/<!--[ ]*START[ ]*NO[ ]*PRINT[ ]*-->(.*)<!--[ ]*END[ ]*NO[ ]*PRINT[ ]*-->/si', '', $pageData['raw_content']);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 9

你贪婪地匹配.

你需要一个非贪婪的修饰符:

'/<!--[ ]*START[ ]*NO[ ]*PRINT[ ]*-->(.*?)<!--[ ]*END[ ]*NO[ ]*PRINT[ ]*-->/si'
Run Code Online (Sandbox Code Playgroud)

注意.*已成为.*?.