如何查找所有未关闭的html标签并使用preg_replace()关闭它们

时间:2015-11-24 16:02:34

标签: php preg-replace

我想修复关闭我网站的html标签,我的用户发布的数据格式不正确,(有时他们忘记关闭html标签,这会使他们的帖子看起来很难看。)

所以我尝试了preg_replace,但它不起作用

这是我的字符串:

 $upost="<html><body><b>Hello world!<b></body><html>";

标签B和Html未关闭,我希望我的代码能够找到所有未关闭的标签并进行更正。

echo preg_replace("/.*|^<[^>]+>[^>]+<([^>]+)>/i","</$1>",$upost);

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

别。至少是not with a regex

libxml_use_internal_errors(true); // basically hide 'em, we don't care
$dom = new DOMDocument();
$dom->loadHTML($upost);
$upost = $dom->saveHTML();

根据需要进行调整,但这会尽可能地解析它并返回格式正确的HTML。