我正在尝试检测远程服务器上是否存在图像。但是,我尝试了几种方法,无法使它们起作用。
现在我正在尝试使用它:
if (!CheckImageExists("http://img2.netcarshow.com/ABT-Audi_R8_2008_1024x768_wallpaper_01.jpg")) { print_r("DOES NOT EXIST"); } else { print_r("DOES EXIST"); }; function CheckImageExists($imgUrl) { if (fopen($imgUrl, "r")) { return true; } else { return false; }; };
但无论图像是否真实存在,它都会返回'true'(上面的图像应该是,但是将其更改为乱码并仍然会返回'true')。我有一种感觉,可能是因为如果URL不存在,它会重定向到网站的主页。但我不知道如何发现它。
感谢您的帮助!
答案 0 :(得分:2)
使用cURL。
获取资源后,您可以获取调用curl_errno()的错误代码。
答案 1 :(得分:0)
您可能会将HTML页面重新放回包含“未找到404图像”或类似内容的$ imgUrl中。
您应该能够检查代码的响应,表明请求失败或重定向。
答案 2 :(得分:0)
这应该可以解决问题(使用图像大小):
if (!CheckImageExists("http://www.google.com/intl/en_ALL/images/srpr/logo1w.png")) {
echo 'DOES NOT EXIST';
} else {
echo 'DOES EXIST';
};
function CheckImageExists($imgUrl) {
if (@GetImageSize($imgUrl)) {
return true;
} else {
return false;
};
};
答案 3 :(得分:0)
使用Seb的方法。只是使用YQL来检查页面的实际内容并确定它是否是错误。