首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Html5标记上的PHP DOMDocument错误/警告

Html5标记上的PHP DOMDocument错误/警告
EN

Stack Overflow用户
提问于 2011-05-23 04:43:34
回答 6查看 66.9K关注 0票数 124

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

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

要重现的代码:

代码语言:javascript
复制
<?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():标记导航在实体中无效,第4行位于/home/wbkrnl/public_html/new-mvc/1.php的第17行

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-23 04:56:30

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

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

代码语言:javascript
复制
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML('...');
libxml_clear_errors();
票数 221
EN

Stack Overflow用户

发布于 2014-09-04 16:56:48

你也可以这样做

代码语言:javascript
复制
@$dom->loadHTML($htmlString);
票数 17
EN

Stack Overflow用户

发布于 2015-12-02 18:47:12

您可以过滤从解析器获得的错误。根据这里的其他答案,关闭对屏幕的错误报告,然后迭代错误并只显示您想要的错误:

代码语言:javascript
复制
libxml_use_internal_errors(TRUE);
// Do your load here
$errors = libxml_get_errors();

foreach ($errors as $error)
{
    /* @var $error LibXMLError */
}

以下是单个错误的print_r()

代码语言:javascript
复制
LibXMLError Object
(
    [level] => 2
    [code] => 801
    [column] => 17
    [message] => Tag section invalid

    [file] => 
    [line] => 39
)

通过在message和/或code上进行匹配,可以很容易地过滤掉这些。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6090667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档