替换两个标签之间的一切

时间:2012-06-28 14:40:55

标签: php regex

  

可能重复:
  Insert string between two points with PHP

如何替换<!-- START NOT PRINT --><!-- END NO PRINT -->之间的所有内容?

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

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

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

1 个答案:

答案 0 :(得分:9)

你贪婪地匹配。

您需要non-greedy modifier

'/<!--[ ]*START[ ]*NO[ ]*PRINT[ ]*-->(.*?)<!--[ ]*END[ ]*NO[ ]*PRINT[ ]*-->/si'

请注意.*已成为.*?