我如何删除所有的html输入但是注释?例如:
这<html><body><!-- hello paragraph --><p>hello</p></body></html>
会变成这个:<!-- hello paragraph -->
我该怎么做?谢谢!
编辑:我知道你可以用正则表达式做这样的事情,但我不知道怎么做。
答案 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);