I run the code first on MAMP and it worked very well. But when I tried to run the code on another server, I got a lot of warnings like:
Warning: 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 tag in
Entity, line: 3350 in /cgihome/zhang1/html/cgi-bin/getPrice.php on
line 17 Warning: DOMDocument::loadHTML(): Tag header invalid in
Entity, line: 3517 in /cgihome/zhang1/html/cgi-bin/getPrice.php on
line 17
The codes are following:
<?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');
?>
Anyone knows what’s going on? Thanks!
To disable the warning, you can use
This works for me, Manual, read on:
Background: You are loading invalid HTML. Invalid HTML is quite common,
DOMDocument::loadHTMLcorrects most of the problems, but gives warnings by default.With
libxml_use_internal_errorsyou can control that behavior. Set it before loading the document:Then after loading you can deal with the errors (if you want/need to):
And finally clear them (as they will add up) and restore the previous setting if applicable:
References
libxml_use_internal_errorsDisable libxml errors and allow user to fetch error information as neededlibxml_clear_errorsClear libxml error bufferlibxml_get_errorsRetrieve array of errorsLibXMLErrorThe libXMLError class