Я пытаюсь получить элементы «ссылки» с определенных веб-страниц. Я не могу понять, что я делаю неправильно. Я получаю следующую ошибку:
Уровень важности: предупреждение
- Это лучший способ импортировать тело DOMDocument (HTML) в другое?
- Получить данные только из таблицы html, используемой preg_match_all в php
- Создать массив из содержимого тегов <div> в php
- PHP DOMDocument, поиск определенных элементов
- Как удалить атрибуты из тега html?
Сообщение: 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,.
Решение заключается в замене символа &
символ &
или если у вас должно быть это &
как есть, возможно, вы можете заключить его в: <![CDATA[
– ]]>
HTML плохо сформирован. Если сформировать достаточно слабо, загрузка HTML в документ DOM может даже завершиться неудачей. Если loadHTML не работает, то подавление ошибок бессмысленно. Я предлагаю использовать такой инструмент, как HTML Tidy, чтобы «очистить» плохо сформированный HTML, если вы не можете загрузить HTML в DOM.
HTML Tidy можно найти здесь http://www.htacg.org/tidy-html5/