如何删除任何html标签,除了它们之间只有可选的空格

时间:2009-11-19 20:05:11

标签: php html regex

我需要清理一些非常丑陋的HTML(想想< span>< / span>< em>< / em>< em>< / em>< strong>< / strong> )一遍又一遍......

我正在寻找一个简单易用的preg_replace来消除任何包含它们之间可选空格的html标签。非常感谢您的帮助!

哦,刚发现这个美女:

< p为H.<强><强>< /强>< /强>< / p为H.

看起来这也需要在while循环中生存。

4 个答案:

答案 0 :(得分:5)

这个主题如何不断出现很有趣。

Don't go with regex。请改为HTML Tidy

答案 1 :(得分:2)

如果您希望真正清理一些代码,我建议使用PHP中的Tidy类。有some examples可能有助于您入门。 (注意这是HTML Tidy

的前端

答案 2 :(得分:0)

如果你真的想要一个正则表达式,这里有一个:

s:<(\w+)>\s*<\/\1>::g

多次运行以消除嵌套案例。

答案 3 :(得分:0)

嗯,看起来整洁是答案:

function cleanupcrap($html){
$tidy_config = array( 
     'clean' => true, 
     'output-xhtml' => true, 
     'show-body-only' => true, 
     'wrap' => 0,
     ); 

    $tidy = tidy_parse_string($html, $tidy_config, 'UTF8'); 
    $tidy->cleanRepair(); 
    return $tidy->value;

}