2

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

我需要使用正则表达式从 $content 中去除 HTML 注释。我尝试了以下代码,它无法正常工作

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

3 回答 3

6

看起来你错过了一些东西。

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

你可以在这里测试它http://www.phpliveregex.com/p/1LX

于 2013-10-30T07:22:50.467 回答
4

你的反斜线正在逃避你的)......我不确定你(.|\)在做什么;为什么不完全使用.*?和删除捕获组?

此外,您想设置s修饰符以.匹配新行。

修改后的代码

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

http://php.net/manual/en/reference.pcre.pattern.modifiers.php
http://www.regular-expressions.info/

于 2013-10-30T07:21:14.400 回答
0

用这个:

您必须转义!,因为它是 reg exp 的一部分,并且还需要包含新行s修饰符,如果注释不是一行。并且懒惰的标志U尽可能少地匹配,当你有多个评论时,这很完美

$content = preg_replace('/<\!--.*-->/Us', '', $content);
于 2013-10-30T07:24:26.180 回答