检查图像是否存在

时间:2013-06-23 10:18:36

标签: php image

我的foreach循环看起来像这样:

foreach($wdata->query->pages->$wpageid->images as $iimages)
{
$name = $iimages->title;
$filename = str_replace(" ", "_",$name);
$filename = str_replace("File:","",$filename);
$digest = md5($filename);
$folder = $digest[0].'/'.$digest[0].$digest[1].'/'. $filename;
$url = 'http://upload.wikimedia.org/wikipedia/commons/'.$folder;
echo "<img style='height:100px;' src='$url'>";
}

显示返回的json数组中的图像($ wdata) 然而,一些图像已被移动,或者不再存在,我得到了破解的图像,是否有人知道如何检查图像是否真实,存在并且可以在回显之前查看

3 个答案:

答案 0 :(得分:2)

使用file_get_cotents()功能检查是否存在

if (file_get_contents("http://....") !== false) { //display image }

答案 1 :(得分:0)

这是一个远程文件,file_exists()不适用于这种情况。所以我建议你使用getimagesize()函数,如果图像存在则返回一个数组。

<?php 

   $imageSize=getimagesize($url);

   if(!is_array($imageSize))
   {
       echo "<img style='height:100px;' src='$url'>";

   }
   else
   {
      echo "no image"; 
   }
?>

另一种解决方案:

if (true === file_get_contents($url,0,null,0,1)) 
{
    echo  "<img style='height:100px;' src='$url'>";
}

这更快,因为如果存在,它会尝试只读取文件的一个字节。

答案 2 :(得分:-1)

使用下面的函数并传递您的网址以进行测试

if (image_exist($url)) {
     echo "<img ...";
}

function image_exist($url) {
$file_headers = @get_headers($url);
if($file_headers[0] == 'HTTP/1.1 200 Found') {
     return true;
}
return false;
}