不正なHTMLをパースしようとした際に発生する典型的なエラー

投稿者:
Uncaught exception Fuel\Core\PhpErrorException: DOMDocument::loadHTML(): Tag header invalid in Entity, line: 2

DOMDocument::loadHTML() が不正なHTMLをパースしようとした際に発生する典型的なエラーです。具体的には、

Thank you for reading this post, don't forget to subscribe!
タグなど、HTML5のタグが古いDOMDocumentの仕様で認識されず「invalid(無効)」と見なされている可能性が高いです。

原因の可能性
– HTMLが完全なドキュメントではない
html, head, body がない、あるいは壊れたHTMLを取得している。

– 取得したHTMLがHTMLではない
実際にはJSONやエラーページ(403, 404, 500など)など、HTMLでないものが $html に入っている。

– HTML5タグを使用しているが、DOMDocument はHTML5非対応
DOMDocument は古いHTML4準拠のパーサであり、header, section, article などHTML5のタグに完全対応していません。

対応

libxml_use_internal_errors(true);
$html2 = \phpQuery::newDocument($html);
libxml_clear_errors();