Dav*_*vid 12 php html-parsing domdocument
我试图从某些网页获取"链接"元素.我无法弄清楚我做错了什么.我收到以下错误:
严重性:警告
消息:DOMDocument :: loadHTML()[domdocument.loadhtml]:htmlParseEntityRef:实体中没有名称,行:536
文件名:controllers/test.php
行号:34
第34行是代码中的以下内容:
Run Code Online (Sandbox Code Playgroud)$dom->loadHTML($html);
我的代码:
$url = "http://www.amazon.com/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
if($html = curl_exec($ch)){
// parse the html into a DOMDocument
$dom = new DOMDocument();
$dom->recover = true;
$dom->strictErrorChecking = false;
$dom->loadHTML($html);
$hrefs = $dom->getElementsByTagName('a');
echo "<pre>";
print_r($hrefs);
echo "</pre>";
curl_close($ch);
}else{
echo "The website could not be reached.";
}
Run Code Online (Sandbox Code Playgroud)
Kri*_*ris 39
这意味着某些HTML代码无效.这只是一个警告,而不是错误.您的脚本仍将处理它.禁止设置警告
libxml_use_internal_errors(true);
Run Code Online (Sandbox Code Playgroud)
或者你可以通过这样做完全压制警告
@$dom->loadHTML($html);
Run Code Online (Sandbox Code Playgroud)
Ujj*_*ngh 14
这可能是由一个恶意&符号引起的,该符号会立即被正确的标记所取代.否则你会收到遗漏的;错误.请参阅:警告:DOMDocument :: loadHTML():htmlParseEntityRef:expecting';' 在实体,.
解决的办法是-更换&用符号&
,或者如果你必须有&,因为它是的话,可能是你可以在它括:<![CDATA[-]]>
| 归档时间: |
|
| 查看次数: |
36554 次 |
| 最近记录: |