Intereting Posts
Санизировать пользовательский CSS в PHP Использование magic_quotes () влияет на использование mysql_real_escape_string () Импортировать данные из txt-файла в базу данных MySQL с помощью PHP для посещения Сложное предложение WHERE с Zend_Db с использованием нескольких операторов AND OR Twig: добавление элемента в массив из встроенного шаблона CakePHP: компонент Auth не входит в систему Как использовать мой сервер в качестве прокси для загрузки файлов через PHP? Отправьте форму на один сервер, обработайте ее, а затем опубликуйте результаты в другом домене Выберите nodeValue, но исключаем дочерние элементы. Скрипт php long running PHP-массив для объекта Json загрузите большой файл размером от 1 до 2 ГБ с помощью загрузки файла jQuery – blueimp (основанный на Ajax) php / yii, который показывает ошибку в браузере Firefox Развертывание Symfony на Heroku указывает на папку приложения Настройка параметров CURL для клиента fabpot / goutte DOM для разбора стены Facebook

PHP DOMDocument :: loadHTML () : htmlParseEntityRef: нет имени в Entity

Я пытаюсь получить элементы «ссылки» с определенных веб-страниц. Я не могу понять, что я делаю неправильно. Я получаю следующую ошибку:

Уровень важности: предупреждение

Сообщение: DOMDocument :: loadHTML () [domdocument.loadhtml]: htmlParseEntityRef: нет имени в Entity, строка: 536

Имя файла: controllers / test.php

Номер строки: 34

Строка 34 в коде:

$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."; } 

Это означает, что некоторые из HTML-кода недействительны. Это просто предупреждение, а не ошибка. Ваш скрипт все равно обработает его. Чтобы подавить установленные предупреждения

  libxml_use_internal_errors(true); 

Или вы можете просто полностью подавить предупреждение, сделав

 @$dom->loadHTML($html); 

Это может быть вызвано символом-изгои & символом, которому сразу же соответствует соответствующий тег. В противном случае вы получили бы недостаток ; ошибка. См .: Предупреждение: DOMDocument :: loadHTML (): htmlParseEntityRef: Ожидание ';' в Entity,.

Решение заключается в замене символа & символ &amp;
или если у вас должно быть это & как есть, возможно, вы можете заключить его в: <![CDATA[]]>

HTML плохо сформирован. Если сформировать достаточно слабо, загрузка HTML в документ DOM может даже завершиться неудачей. Если loadHTML не работает, то подавление ошибок бессмысленно. Я предлагаю использовать такой инструмент, как HTML Tidy, чтобы «очистить» плохо сформированный HTML, если вы не можете загрузить HTML в DOM.

HTML Tidy можно найти здесь http://www.htacg.org/tidy-html5/