Php 使用正则表达式从内容中删除HTML注释

Php 使用正则表达式从内容中删除HTML注释,php,regex,preg-replace,Php,Regex,Preg Replace,我正在将页面内容放入变量$content 我需要使用正则表达式从$content中剥离HTML注释。我尝试了以下代码,它不能正常工作 $content = preg_replace('/<!--(.|\)*?-->/', '', $content); $content=preg_replace(“//”,“$content”); 您的反斜杠正在逃逸您的)。。。我不确定你认为(.|\)在做什么;为什么不直接使用*?并完全删除捕获组 此外,还需要设置s修饰符,使匹配新行 修订守则 $c

我正在将页面内容放入变量$content

我需要使用正则表达式从$content中剥离HTML注释。我尝试了以下代码,它不能正常工作

$content = preg_replace('/<!--(.|\)*?-->/', '', $content);
$content=preg_replace(“//”,“$content”);

您的反斜杠正在逃逸您的
。。。我不确定你认为
(.|\)
在做什么;为什么不直接使用
*?
并完全删除捕获组

此外,还需要设置
s
修饰符,使
匹配新行

修订守则
$content=preg_replace('//s',''$content);


看起来你遗漏了什么

 $content = preg_replace( '/<!--(.|\s)*?-->/' , '' , $content );
$content=preg_replace(“//”,“$content”);
您可以在此处测试它

使用以下方法:

你必须逃脱
因为它是reg exp的一部分,并且还需要包含新行
s
修饰符,所以此注释不是一行。和lazy标志
U
以尽可能少地匹配,这是在您收到多条注释时使用的 完美

$content = preg_replace('/<\!--.*-->/Us', '', $content);
$content=preg_replace('//Us',''$content);

这个
不需要转义。。。虽然
U
修饰符是一种替代方法,但OP已经将正则表达式设置为与
的使用以一种不灵活的方式进行匹配。我说它用于我自己的代码您的解决方案按预期工作。谢谢。你知道这行代码为什么会在我这边导致“500内部服务器错误”吗?这对我来说很有效:$html=preg\u replace(“~~s”,”,$html);这是一种非常糟糕的资源消耗模式。
$content = preg_replace('/<\!--.*-->/Us', '', $content);