1

我正在尝试使用 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 标签。

4

2 回答 2

2

首先,您需要了解 XHTML 中的“格式良好的标记文档”是什么。使用格式良好的标记,如果它们是备用的未配对标签,则不能保证选择为“开始结束对(打开关闭)”的标签将是正确的两个。

其次,您需要构建一个循环,以便在每次迭代时从标签类型的数组存储库中调用每个标签。数组中的标签应该是“文字”。在测试标签是否存在之前,应在循环中获取并设置每个标签“长度”int。

当找到标记对的匹配(打开关闭)时,preg match 将部分放入匹配的副本数组中,位置和长度,然后从 preg 匹配返回的部分中获取匹配的长度及其起始位置结果数组(在开发脚本时使用数组的调试打印输出)。

在每个匹配的开闭对中,您需要执行相同操作的子循环来检查内部标签。

概要: 要构建这样一个系统,如定制的脚本,使用 XML 格式良好的文档解析器和具有任何有效效率的调试器。如果它具有有效的效率,它将是 IDE 的标记调试器。祝你好运。

于 2013-07-23T18:42:34.673 回答
0

您应该调查 PHP Tidy 扩展 ( http://php.net/manual/en/book.tidy.php ) 的使用。您可以使用 Tidy 根据您尝试验证的任何 DOCTYPE 清理格式错误的 HTML。

于 2013-07-24T15:45:43.253 回答