只有在 HTML 被完美标记的情况下,PHP 中的 DOM 解析才有效。我需要解析不是完美 DOM 的 html。该 HTML 来自远程服务器,所以我无法更改它。
<html>
<body>
<table>
<tr>
<td>
1
</td>
<td>
2
</td></td>
</tr>
</table>
当我用这个结构解析 html 时,它给出了一个错误。 警告:DOMDocument::loadHTML() [domdocument.loadhtml]:意外的结束标记:实体中的 td,第 51 行 C:\wamp\wwwxxxxxx 中的第 173 行
最佳答案
诸如tidy
之类的工具应该能够修复 HTML,以便您可以在 DOM 中使用它。
$html = "<html>
<body>
<table>
<tr>
<td>
1
</td>
<td>
2
</td></td>
</tr>
</table>";
$tidy = tidy_parse_string($html);
$html = $tidy->html();
$cleanHTML = $html->value;
$doc = new DomDocument();
$doc-> loadhtml($cleanHTML);
注意:Tidy 未随 PHP 一起提供,您必须安装扩展才能使用这些功能
关于php - php 中不规则 DOM 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8590166/