我不知道如何做到这一点,我挣扎了整整一个上午,不知怎么的,但我不能。
我从蒸汽中提取一些数据从他们的蒸汽api服务json文件,但问题是我不知道他们是否故意这样做,或者只是假设人们不会使用他们的api,所以他们发布了一个链接到json文件中的图像,但服务器上的实际图像不存在,即使我访问他们的网站,我从json文件中提取的包图像甚至不存在在他们的网站上。
所以我想知道我如何重写这个?
当我拉json文件数组返回这个(它只是一部分的图像是,实际的json文件是非常大的复制到这里)
[name] => Enclave
[page_image] => http://cdn.akamai.steamstatic.com/steam/subs/31131/header.jpg?t=1380891628
[apps] => Array
(
[0] => Array
(
[id] => 253980
[name] => Enclave
)
)
如果你访问一个游戏图片不存在的网站,如果你点击image link
http://cdn.akamai.steamstatic.com/steam/subs/31131/header.jpg?t=1380891628
返回404错误文件不存在
那么在图像不存在的情况下我如何重写这个并显示我自己的图像呢?
I tried with
if(!empty($image))
if(property_exists($image))
if($image !== false)
and of course $image path to json data [page_image]
none of combination works
然而,当图像存在时,它会正确地显示图像,所以$image设置正确。
getimagesize
是一种检查资源是否实际上是图像的方法。getimagesize
返回一个数组,如果链接指向有效的图像资源,则返回。您还可以在远程文件上使用getimagesize
:
$image = 'http://cdn.akamai.steamstatic.com/steam/subs/31131/header.jpg?t=1380891628';
if (is_array(@getimagesize($image))) {
//image exists
} else {
//image does not exists
}
在调用之前,改变运行时错误报告的级别,而不是通过@
来抑制getimagesize
警告:
error_reporting(E_ALL & ~E_WARNING);
你可以来回切换,这样E_WARNING
仍然会在你的应用程序的其余部分回显。
如果你真的想在PHP中这样做,那么你可以:
$fh = @fopen($image, 'r');
$imageexists = $fh!=false;
if ($fh) fclose($fh);