2016-04-27 54 views
1

在HTML頁面中,我刪除這樣PHP如何設置預浸-組「非捕獲」(?:...)

$contentHTML = preg_replace("#(?=<!--)([\s\S]*?)-->#", "", $contentHTML); 

HTML註釋,但一個巨大的頁面上preg_replace,我得到「PHP致命錯誤:允許的內存大小...

也許,一個解決方案,將使用不匹配的組,以避免捕獲文本? 有人可以解釋如何使用匹配組?:

或者我怎樣才能抑制HTML評論在巨大的頁面沒有preg_replace

回答

2

剛剛展開的正則表達式爲

$contentHTML = preg_replace("#<!--[^-]*(?:-(?!->)[^-]*)*-->#", "", $contentHTML); 

regex demo。 Comapre與yours採取的步驟相比,我的步驟更多,只是一個很短的例子。

詳情:

  • <!-- - 評論
  • 開始
  • [^-]* - 0+非-
  • (?:-(?!->)[^-]*)* - 的- 0+序列後面沒有與->然後0+非- s
  • --> - 評論結束