php - php 中不规则 DOM 解析

标签 php dom domparser

只有在 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/

相关文章:

php - Mysql 获取具有特定顺序的日期之间的唯一记录

javascript - onload 或 addEventListener 的顺序以及设置图像的 src 是否真的重要?

javascript - 有没有办法将实际的 DOM 写入字符串

javascript - 在没有 jQuery 的情况下获取 HTML 中的选定选项

javascript - 如何解析具有类似 XML 结构的文件,但在内容旁边带有自闭合标签(而不是包含内容)

java - 如果 XML 包含附件标记,DOM 解析器会抛出空指针异常

java - 与元素类型 "X"关联的属性名称 "Y"必须后跟 ' = ' 字符

php - 如何根据 php 标题的长度调整 margin-top 属性?

javascript - 我希望当我单击编辑图像时可以使用编辑功能

php - 循环关联数组时优化 SQL 更新