PHP 如何将预组设置为 "non-capture" (?:...)
PHP How to set the preg-groups to "non-capture" (?:...)
在 HTML 页面中,我删除了 HTML 这样的评论
$contentHTML = preg_replace("#(?=<!--)([\s\S]*?)-->#", "", $contentHTML);
但是在 preg_replace
的大页面上,我得到了“PHP 致命错误:允许的内存大小 ...”
或许,一种解决方案是使用非匹配组来避免捕获文本?
有人可以解释如何使用匹配组 ?:
或者如何在没有 preg_replace
的情况下在大页面中抑制 HTML 评论?
只需将正则表达式展开为
$contentHTML = preg_replace("#<!--[^-]*(?:-(?!->)[^-]*)*-->#", "", $contentHTML);
通过一个非常简短的示例,看到 regex demo. Comapre with yours 的步数是我的大约 3 倍。
详情:
<!--
- 评论开始
[^-]*
- 0+ 非-
(?:-(?!->)[^-]*)*
- 0+ 个 -
序列,后面没有跟 ->
,然后是 0+ 个非 -
序列
-->
- 评论结束
在 HTML 页面中,我删除了 HTML 这样的评论
$contentHTML = preg_replace("#(?=<!--)([\s\S]*?)-->#", "", $contentHTML);
但是在 preg_replace
的大页面上,我得到了“PHP 致命错误:允许的内存大小 ...”
或许,一种解决方案是使用非匹配组来避免捕获文本?
有人可以解释如何使用匹配组 ?:
或者如何在没有 preg_replace
的情况下在大页面中抑制 HTML 评论?
只需将正则表达式展开为
$contentHTML = preg_replace("#<!--[^-]*(?:-(?!->)[^-]*)*-->#", "", $contentHTML);
通过一个非常简短的示例,看到 regex demo. Comapre with yours 的步数是我的大约 3 倍。
详情:
<!--
- 评论开始[^-]*
- 0+ 非-
(?:-(?!->)[^-]*)*
- 0+ 个-
序列,后面没有跟->
,然后是 0+ 个非-
序列-->
- 评论结束