29

最初に MAMP でコードを実行したところ、非常にうまく機能しました。しかし、別のサーバーでコードを実行しようとすると、次のような多くの警告が表示されました。

警告: DOMDocument::loadHTML(): Unexpected end tag: head in Entity, line: 3349 in /cgihome/zhang1/html/cgi-bin/getPrice.php on line 17 Warning: DOMDocument::loadHTML(): htmlParseStartTag: misplacedエンティティのタグ、行: 17 行目の /cgihome/zhang1/html/cgi-bin/getPrice.php の 3350 警告: DOMDocument::loadHTML(): エンティティのタグ ヘッダーが無効です、行: /cgihome/zhang1/html の 3517 /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');
?>

誰が何が起こっているのか知っていますか?ありがとう!

4

3 に答える 3

130

警告を無効にするには、次を使用できます

libxml_use_internal_errors(true);

これは私にとってはうまくいきます。マニュアル

背景: 無効な HTML を読み込んでいます。無効な HTML は非常に一般的で、DOMDocument::loadHTMLほとんどの問題は修正されますが、デフォルトで警告が表示されます。

そのlibxml_use_internal_errors動作を制御できます。ドキュメントをロードする前に設定します。

libxml_use_internal_errors(true);
$doc->loadHTML($amazon);
于 2012-08-05T20:02:32.117 に答える