Удаление предупреждения DocDocument при анализе содержимого страницы

Я пытаюсь разобрать содержание любого URL-адреса. Который не должен содержать HTML-код. Это прекрасно работает, но дает кучу ошибок при чтении содержимого по указанному URL. Как удалить это предупреждение?

<?php $url= 'http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page'; $doc = new DOMDocument(); $doc->loadHTMLFile($url); $xpath = new DOMXPath($doc); foreach($xpath->query("//script") as $script) { $script->parentNode->removeChild($script); } $textContent = $doc->textContent; //inherited from DOMNode echo $textContent; ?> 

Предупреждения:

 content-from-a-web-page, line: 255 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page, line: 255 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page, line: 273 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page, line: 273 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page, line: 412 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page, line: 412 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page, line: 551 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page, line: 551 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 Warning: DOMDocument::loadHTMLFile(): ID display-name already defined in http://stackoverflow.com/questions/12097352/how-can-i-parse-dynamic-content-from-a-web-page, line: 731 in /opt/lampp/htdocs/FB/ec2/test.php on line 13 

Related of "Удаление предупреждения DocDocument при анализе содержимого страницы"

Вы можете использовать libxml_use_internal_errors() и сделать следующее:

 libxml_use_internal_errors(true); $doc->loadHTMLFile($url); libxml_clear_errors(); 

Как отметил Пихаа в комментариях ниже, рекомендуется сбросить состояние ошибок. Вы можете сделать это, как показано ниже:

 $errors = libxml_use_internal_errors(true); //store $doc->loadHTMLFile($url); libxml_clear_errors(); libxml_use_internal_errors($errors); //reset back to previous state 

Вот как это работает:

  • libxml_use_internal_errors() сообщает libxml обрабатывать ошибки и предупреждения внутренне и не выводить их в браузер. Также сохраняйте текущее состояние ошибок в переменной
  • то вы загружаете HTML-файл с loadHTML() метода loadHTML()
  • очистить буфер ошибок с помощью libxml_clear_errors
  • восстанавливает старые значения ошибок

Демо!