在HTML页面中,我删除了这样的HTML注释
$contentHTML = preg_replace("#(?=<!--)(['s'S]*?)-->#", "", $contentHTML);
但是在preg_replace
的一大页上,我得到了"PHP致命错误:允许的内存大小......"
也许,一种解决方案将使用不匹配组来避免捕获文本?有人可以解释如何使用匹配组?:
或者如何在没有preg_replace
的情况下抑制大页面中的 HTML 注释?
只需展开正则表达式即可
$contentHTML = preg_replace("#<!--[^-]*(?:-(?!->)[^-]*)*-->#", "", $contentHTML);
请参阅正则表达式演示。Comapre 与你的步骤大约是我的 3 倍,举一个非常简短的例子。
详:
-
<!--
- 评论开始 -
[^-]*
- 0+ 非-
-
序列,后面不跟->
,然后是 0+ 非-
s-
-->
- 注释结束
(?:-(?!->)[^-]*)*
- 0+ 个