0

我有看起来像这样的 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)的图像但是,一些图像已被移动,或者不再存在,并且我得到了破解的图像,有谁知道如何检查图像是否真实,存在并且可以查看在它被回响之前

4

3 回答 3

2

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

if (file_get_contents("http://....") !== false) { //display image }
于 2013-06-23T10:20:13.950 回答
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'>";
}

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

于 2013-06-23T10:21:54.777 回答
-1

使用如下函数并传递您的 url 进行测试

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;
}
于 2013-06-23T10:23:24.840 回答