在HTML页面中,我删除了像这样的HTML评论
$contentHTML = preg_replace("#(?=<!--)([\s\S]*?)-->#", "", $contentHTML);
但在preg_replace
的大页面上,我收到了“ PHP致命错误:允许的内存大小...... ”
也许,一个解决方案,会使用非匹配组来避免捕获文本?
有人可以解释如何使用匹配组?:
或者如何在没有preg_replace
的情况下在大页面中禁止HTML评论?
答案 0 :(得分:2)
将正则表达式展开为
$contentHTML = preg_replace("#<!--[^-]*(?:-(?!->)[^-]*)*-->#", "", $contentHTML);
请参阅regex demo。与yours合作的Comapre大约是我的步数的3倍,只有很短的例子。
详细说明:
<!--
- 评论开始[^-]*
- 0+非 - -
(?:-(?!->)[^-]*)*
- -
的0个序列未跟->
,然后0 +非-
s -->
- 评论结束