我的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) 然而,一些图像已被移动,或者不再存在,我得到了破解的图像,是否有人知道如何检查图像是否真实,存在并且可以在回显之前查看
答案 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;
}