PHP删除所有HTML但注释

时间:2011-03-18 03:16:50

标签: php html comments

我如何删除所有的html输入但是注释?例如: 这<html><body><!-- hello paragraph --><p>hello</p></body></html> 会变成这个:<!-- hello paragraph -->

我该怎么做?谢谢!

编辑:我知道你可以用正则表达式做这样的事情,但我不知道怎么做。

3 个答案:

答案 0 :(得分:1)

我不是替换HTML,而是使用以下方法提取所有评论:

preg_match_all('#(<!--.*?-->)#s', '<html><body><!-- hello paragraph --><p>hello</p></body></html>', $m);

答案 1 :(得分:0)

这确实有点复杂,但可以使用正则表达式:

$text = preg_replace('~<(?!!--)/?\w[^>]*(?<!--)>~', "", $text);

这适用于您的示例,但其他人可能会失败。有趣的是,它还会从评论中删除HTML标记。

$regex = '~
    <             # opening html bracket
    (?!!--)       # negative assertion, no "!--" may follow
    /?\w          # tags must start with letter or optional /
    [^>]*         # matches html tag innards
    (?<!--)       # lookbehind assertion, no "--" before closing >
    >             # closing bracket
 ~x'

答案 2 :(得分:0)

$foo="<html><body><!-- hello paragraph --><p>hello</p></body></html>";
preg_match('/(\<|<)!--(\s*.*?\s*)--(\>|>)/m',$foo,$result);
print_r($result);