检测字符串是否包含未关闭的html标记[php]



我想知道是否有可能检测字符串是否包含未闭合的标记,如果是,请去掉该标记或将其关闭。例如,我有:

<p>lorem ipsum dolor..</p> some other text <em> em tag unclosed

正如您所看到的,有一个未关闭的标记,如果我们将其呈现为HTML,将导致浏览器出现问题。所以我想关闭那个标签,或者如果它没有关闭,就把它剥光(剥光其实很容易,但很难做的是检测(。

这在PHP中可能吗?

您可以将DOMDocument用于

$doc = new DomDocument();
$stringToTest = mb_convert_encoding($stringToTest, 'HTML-ENTITIES', 'UTF-8');
$doc->loadHTML($stringToTest, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
echo $doc->saveHTML();

对于产生的示例

<p>lorem ipsum dolor..<p> some other text <em> em tag unclosed</em></p></p>

注意:首先,最好不要生成损坏的HTML。作为备份,你应该让浏览器来修复它(因为浏览器在这方面非常好(。

最新更新