PHP DOMDocument :: loadHTML()[domdocument.loadhtml]:htmlParseEntityRef:实体中没有名称

Dav*_*vid 12 php html-parsing domdocument

我试图从某些网页获取"链接"元素.我无法弄清楚我做错了什么.我收到以下错误:

严重性:警告

消息:DOMDocument :: loadHTML()[domdocument.loadhtml]:htmlParseEntityRef:实体中没有名称,行:536

文件名:controllers/test.php

行号:34

第34行是代码中的以下内容:

      $dom->loadHTML($html);
Run Code Online (Sandbox Code Playgroud)

我的代码:

            $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';' 在实体,.

解决的办法是-更换&用符号&amp;
,或者如果你必须有&,因为它是的话,可能是你可以在它括:<![CDATA[-]]>