Похоже, содержание $ html останавливается на теге для этой страницы.Любая идея, почему?
Да, вы должны предоставить этой странице действительный пользовательский агент.
$url = 'http://www.w3schools.com/js/js_loop_for.asp';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
curl_exec($ch);
выводит все в конец </html>
, включая запрошенный <img border="0" width="336" height="69" src="/images/w3schoolslogo.gif" alt="W3Schools.com" style="margin-top:5px;" />
Когда простой wget или curl без агента пользователя возвращается только до тега <body>
.
$url = 'http://www.w3schools.com/js/js_loop_for.asp';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
$doc = new DOMDocument();
$doc->loadHTML($html);
$xml = simplexml_import_dom($doc);
$images = $xml->xpath('//img');
var_dump($images);
die();
РЕДАКТИРОВАТЬ: В моем первом посте говорилось, чтовсе еще была проблема с xpath ... Я просто не выполнял должной осмотрительности, и обновленный код выше прекрасно работает.Я забыл заставить curl выводить в строку, а не печатать на экран (как это делается по умолчанию).