正确的正则表达式从HTML中删除不需要的注释

时间:2014-03-16 06:25:53

标签: php html regex preg-replace

我想要一个正则表达式,它可以使用PHP从HTML中删除所有注释。

我在stackoverflow上看到了Regexp match strickly html comment string之类的一些线程,但是那里提供的正则表达式不起作用。我应用提供的代码后,我的PHP代码没有输出任何内容。

我写道:

$regex = array('/<!--((.*)!(\[if))-->/Uis', "/[[:blank:]]+/");
$replaced_comment_in_html = preg_replace($regex, '', $html);

但它显示HTML的评论:

<!-- This is my test comment, which I want to be removed in HTML  -->
<!--[if lt IE 9]>
    <script src="something.js"></script>
<![endif]-->

它不删除我想要删除的注释,如果我写下面的正则表达式,那么它会删除所有注释(也是页面上所需的IE样式和脚本)

$regex = array('/<!--(.*)-->/Uis', "/[[:blank:]]+/");

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

使用此正则表达式:

<!--[^\[].*-->

这不会删除IE评论,但会删除其他评论。

像这样使用:

$regex = array('/<!--[^\[].*-->/Uis', "/[[:blank:]]+/");
$replaced_comment_in_html = preg_replace($regex, '', $html);