如何在所有情况下从网页获取所有图像?

时间:2013-07-16 11:03:23

标签: php

我正在使用此脚本从通用外部网页获取所有图片:

$url = ANY URL HERE;
$html = @file_get_contents($url,false,$context);
$dom = new domDocument;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');

foreach ($images as $image) {
 echo $image->getAttribute('src');
}

但在某些情况下(图片位于“ rel:image_src ”中)

<img src="http://example.com/example.png" rel:image_src="http://example.com/dir/me.jpg"  />

它不起作用。

我该怎么办?

3 个答案:

答案 0 :(得分:2)

你可以同时包括:

foreach ($images as $image) {
  echo $image->getAttribute('src');
  echo $image->getAttribute('rel:image_src');
}

答案 1 :(得分:0)

检查节点是否具有属性rel:image_src

foreach ($images as $image) {
  if( $image->hasAttribute('rel:image_src') ) {
     echo $image->getAttribute('rel:image_src');
  } else {
     echo $image->getAttribute('src');
  }
}

答案 2 :(得分:0)

如果您希望rel:image_src优先,请检查属性是否存在并有选择地使用它:

$url  = ANY URL HERE;
$html = @file_get_contents($url,false,$context);
$dom  = new domDocument;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');

foreach ($images as $image) {
  if ($image->hasAttribute('rel:image_src')
  {
    echo $image->getAttribute('rel:image_src');
  }
  else
  {
    echo $image->getAttribute('src');
  }

}