我想知道是否有可能检测字符串是否包含未闭合的标记,如果是,请去掉该标记或将其关闭。例如,我有:
<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。作为备份,你应该让浏览器来修复它(因为浏览器在这方面非常好(。