Dom loadHTML не работает должным образом на сервере

Сначала я запускаю код на MAMP, и он работал очень хорошо. Но когда я попытался запустить код на другом сервере, у меня появилось много предупреждений:

Предупреждение: DOMDocument :: loadHTML (): Неожиданный конечный тег: head в Entity, строка: 3349 в /cgihome/zhang1/html/cgi-bin/getPrice.php в строке 17 Предупреждение: DOMDocument :: loadHTML (): htmlParseStartTag: неуместно тег в Entity, строка: 3350 в /cgihome/zhang1/html/cgi-bin/getPrice.php в строке 17 Предупреждение: DOMDocument :: loadHTML (): заголовок тега недействителен в Entity, строка: 3517 in / cgihome / zhang1 / html /cgi-bin/getPrice.php в строке 17

Коды следующие:

<?php $amazon = file_get_contents('http://www.amazon.com/blablabla'); $doc = new DOMdocument(); $doc->loadHTML($amazon); $doc->saveHTML(); $price = $doc -> getElementById('actualPriceValue')->textContent; $ASIN = $doc -> getElementById('ASIN')->getAttribute('value'); ?> 

Кто-нибудь знает, что происходит? Благодаря!

Чтобы отключить предупреждение, вы можете использовать

 libxml_use_internal_errors(true); 

Это работает для меня. Руководство

Предпосылки: вы загружаете недействительный HTML. Недопустимый HTML довольно распространен, DOMDocument::loadHTML исправляет большинство проблем, но дает предупреждения по умолчанию.

С помощью libxml_use_internal_errors вы можете контролировать это поведение. Установите его перед загрузкой документа:

 libxml_use_internal_errors(true); $doc->loadHTML($amazon); 

Вы можете подавить предупреждение следующим образом:

 @$doc->loadHTML($amazon); 

Эта проблема связана с кодом не xHTML

Поскольку DOMdocument () может обрабатывать только чистый XHTML, вам нужно очистить свой код

Php имеет расширение, которое делает работу довольно хорошо. Вызывается Tidy php.net/book.tidy

Это может быть сложно, поскольку вам может потребоваться включить его в php.ini

затем

 $tidy_config = array( 'clean' => true, 'output-xhtml' => true, 'show-body-only' => true, 'wrap' => 0, ); $tidy = tidy_parse_string( $html, $tidy_config, 'UTF8'); $tidy->cleanRepair(); $doc = new DOMdocument(); $doc->loadHTML( (string) $tidy);