可能重复:
使用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)
你贪婪地匹配.
你需要一个非贪婪的修饰符:
'/<!--[ ]*START[ ]*NO[ ]*PRINT[ ]*-->(.*?)<!--[ ]*END[ ]*NO[ ]*PRINT[ ]*-->/si'
Run Code Online (Sandbox Code Playgroud)
注意.*已成为.*?.