php - 检测字符串是否包含未闭合的 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。作为备份,您应该将其留给修复它的浏览器(因为浏览器在这方面非常出色)。
推荐阅读
- routing - Polymer SPA 的登录页面
- spring - Keycloak Grails Spring - 登录后重定向
- c++ - 在 g++ v8.2.0 中使用 std::experimental::optional
- java - Java Date获取实际偏移量
- python - python / sql使用48位二进制字符串表示一天中的半小时间隔
- frameworks - 使用 Robotframework 与“nc”工具进行简单的测试连接?
- c++ - 使用 MFC 将两个数字相加
- filtering - Prestashop 1.7 - 过滤不起作用,显示空结果
- javascript - 重构代码以进行数据库调用而不是使用本地存储
- java - DDD - 如何创建新实例或加载聚合根?