PHP DOMDocument loadHTML 错误

Posted

技术标签:

【中文标题】PHP DOMDocument loadHTML 错误【英文标题】:PHP DOMDocument loadHTML error 【发布时间】:2012-05-18 10:52:18 【问题描述】:

它回来了

( ! ) 警告:DOMDocument::loadhtml() [domdocument.loadhtml]: Misplaced DOCTYPE declaration in Entity, line: 3 in C:\wamp\www\source.php on line 8

代码:

<?php

    $url = "http://www.some-plain-html-website.com";

    $content = file_get_contents($url);

    $dom = new DOMDocument;
    $dom->loadHTML($content);

?>

由于某种原因,它不会解析 $content。如果我将内容设为 $content = ""; 这样的字符串我通过元素标签名称对其进行解析它没有问题但是如果我给它返回 file_get_content() 方法它会产生该错误。

file_get_contents() 的文档说它返回一个字符串,但由于某种原因它不起作用我什至尝试了 $content = (string)file_get_contents($url);

同样的事情,提前感谢所有帮助。

【问题讨论】:

【参考方案1】:

在许多情况下,建议在$dom-&gt;loadHTML($content); 之前使用libxml_use_internal_errors(true);

这样就不会抛出警告,页面还是会被加载。

【讨论】:

【参考方案2】:

您尝试抓取的 html 页面格式不正确。文档类型声明必须是文档的第一行。您可以尝试在使用 loadHTML() 加载内容之前从内容中删除前两行。

【讨论】:

查看 PHP 文档以了解如何操作字符串......................................

以上是关于PHP DOMDocument loadHTML 错误的主要内容,如果未能解决你的问题,请参考以下文章

DOMDocument::loadHTML(): 由于输入错误,输入转换失败

PHP DOMDocument - createDocumentFragment 不适用于 loadHTML

防止 DOMDocument::loadHTML() 转换实体

PHP DOMDocument - 获取 BODY 的 html 源代码

PHP DOMDocument 添加了额外的标签

如何防止 PHP 的 DOMDocument 编码 html 实体?