如何替换<!-- START NOT PRINT -->
和<!-- END NO PRINT -->
之间的所有内容?
以下代码运行良好,但只要有两个或更多实例,就会出错。
然后它替换第一个标记和最后一个标记之间的所有内容。但它应该删除属于一起的两个标签之间的所有内容。这是我的代码:
$pageData['raw_content'] = preg_replace('/<!--[ ]*START[ ]*NO[ ]*PRINT[ ]*-->(.*)<!--[ ]*END[ ]*NO[ ]*PRINT[ ]*-->/si', '', $pageData['raw_content']);
答案 0 :(得分:9)
你贪婪地匹配。
'/<!--[ ]*START[ ]*NO[ ]*PRINT[ ]*-->(.*?)<!--[ ]*END[ ]*NO[ ]*PRINT[ ]*-->/si'
请注意.*
已成为.*?
。