PHP DOMhtml5 标签上的文档错误/警告

2022-08-30 07:05:51

我一直在尝试解析HTML5代码,以便我可以在代码中设置属性/值,但似乎DOMDocument(PHP5.3)不支持像和这样的标签。<nav><section>

有没有办法在PHP中将其解析为HTML并操作代码?


要重现的代码:

<?php
$dom = new DOMDocument();
$dom->loadHTML("<!DOCTYPE HTML>
<html><head><title>test</title></head>
<body>
<nav>
  <ul>
    <li>first
    <li>second
  </ul>
</nav>
<section>
  ...
</section>
</body>
</html>");

错误

警告: DOMDocument::loadHTML(): 在实体中标记导航无效,在第 17 行的 /home/wbkrnl/public_html/new-mvc/1.php 行中: 4

警告: DOMDocument::loadHTML(): 标记部分在实体中无效,行:10 在 /home/wbkrnl/public_html/new-mvc/1.php 在第 17 行


答案 1

不,无法指定要使用的特定文档类型,也无法修改现有文档类型的要求。

您最好的可行解决方案是禁用libxml_use_internal_errors错误报告:

$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML('...');
libxml_clear_errors();

答案 2

你也可以做

@$dom->loadHTML($htmlString);

推荐