Dom文档加载
Domdocument loading
我想解析一个 html 文件。
$html =htmlentities( file_get_contents('http://forums.heroesofnewerth.com/showthread.php?553261'));
$dom = new DOMDocument();
$dom->loadHTML($html);//line 30
我遇到了这些错误
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 113 in D:\Projects\Web projects\done\honscript\index.php on line 30
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 113 in D:\Projects\Web projects\done\honscript\index.php on line 30
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 200 in D:\Projects\Web projects\done\honscript\index.php on line 30
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 200 in D:\Projects\Web projects\done\honscript\index.php on line 30
更改为使用html实体并获取
Warning: DOMDocument::loadHTML(): Empty string supplied as input in D:\Projects\Web projects\done\honscript\index.php on line 30
您尝试加载的文档无效 HTML,因此无效 DOM(有关 HTML 错误的详尽列表,请参阅 http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fforums.heroesofnewerth.com%2Fshowthread.php%3F553261页)。
所以 PHP 基本上必须猜测它所提供的 HTML 的含义并对此发出警告(它可能猜错了)。
& 是 HTML 中的一个特殊字符,用于转义特殊字符(例如要在 HTML 页面中打印 <,您必须编写 <。它还有在 URL 中作为请求变量的分隔符有特殊含义(例如 http://example.com?foo=bar&braz=omfg),因此在网站中经常出现。在 HTML 中编写 & 的正确方法是 &.
可能猜测是正确的,DOM文档会工作得很好。所以你可以像这样抑制这个警告:
@$dom->loadHTML($html);
否则您将不得不以某种方式修复 HTML。只是 运行 它通过上面提到的 htmlentities 是行不通的,因为它也会转义所有标签标记等
可能有用的方法是将所有 & 替换为
&尽管这可能会导致其他后果,因为 &会变成 &所以你只需要替换那些后面没有 amp; 的 &。
我想解析一个 html 文件。
$html =htmlentities( file_get_contents('http://forums.heroesofnewerth.com/showthread.php?553261'));
$dom = new DOMDocument();
$dom->loadHTML($html);//line 30
我遇到了这些错误
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 113 in D:\Projects\Web projects\done\honscript\index.php on line 30
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 113 in D:\Projects\Web projects\done\honscript\index.php on line 30
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 200 in D:\Projects\Web projects\done\honscript\index.php on line 30
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 200 in D:\Projects\Web projects\done\honscript\index.php on line 30
更改为使用html实体并获取
Warning: DOMDocument::loadHTML(): Empty string supplied as input in D:\Projects\Web projects\done\honscript\index.php on line 30
您尝试加载的文档无效 HTML,因此无效 DOM(有关 HTML 错误的详尽列表,请参阅 http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fforums.heroesofnewerth.com%2Fshowthread.php%3F553261页)。
所以 PHP 基本上必须猜测它所提供的 HTML 的含义并对此发出警告(它可能猜错了)。
& 是 HTML 中的一个特殊字符,用于转义特殊字符(例如要在 HTML 页面中打印 <,您必须编写 <。它还有在 URL 中作为请求变量的分隔符有特殊含义(例如 http://example.com?foo=bar&braz=omfg),因此在网站中经常出现。在 HTML 中编写 & 的正确方法是 &.
可能猜测是正确的,DOM文档会工作得很好。所以你可以像这样抑制这个警告:
@$dom->loadHTML($html);
否则您将不得不以某种方式修复 HTML。只是 运行 它通过上面提到的 htmlentities 是行不通的,因为它也会转义所有标签标记等
可能有用的方法是将所有 & 替换为 &尽管这可能会导致其他后果,因为 &会变成 &所以你只需要替换那些后面没有 amp; 的 &。