我正在尝试使用file_get_contents读取html页面。处理完数据后,有一些不完整的标签,例如:
</p><p> test test test test</p>
在这种情况下,没有<p>
可以打开</p>
或
<font color="#333333">abc</font><div><p>go go go go </p>
在这种情况下,没有</div>
关闭<div>
因此我想使用preg_replace删除所有这些不完整的标记,在我的示例中,应删除额外的</p>
和<div>
。我怎样才能做到这一点?这些标签可以是任何有效的html5标签。
答案 0 :(得分:2)
首先,您需要了解XHTML中“格式正确的标记文档”的含义。 使用格式良好的标记,如果它们是备用的不成对标记,则不保证选择作为“起始端对(开放关闭)”的标记将是正确的标记。
其次,您需要构建一个循环,以便从标记类型的数组存储库中每次迭代调用每个标记。数组中的标记应为“文字”。 在测试标签存在之前,应该在循环中采用每个标签“length”int。
当找到标签对(打开关闭)的匹配时,preg match将该部分放入匹配,位置和长度的副本数组,然后从匹配的部分获取匹配的长度和它的起始位置。 preg匹配返回结果数组(在开发脚本时使用数组的调试打印输出)。
在每个打开的关闭对中,您需要执行相同操作的子循环来检查内部标记。
<强>梗概:强> 要构建这样一个系统作为自定义脚本,需要使用XML格式良好的文档解析器和调试器,并且具有任何有效的效率。如果它具有有效的效率,它将成为IDE的标记调试器。 祝你好运。
答案 1 :(得分:0)
您应该调查PHP Tidy扩展(http://php.net/manual/en/book.tidy.php)的使用。您可以使用Tidy根据您尝试验证的任何DOCTYPE清除格式错误的HTML。