3

我正在尝试检测远程服务器上是否存在图像。但是,我尝试了几种方法,但都无法使它们起作用。

现在我正在尝试使用它:

如果(!CheckImageExists(“http://img2.netcarshow.com/ABT-Audi_R8_2008_1024x768_wallpaper_01.jpg”)){
    print_r("不存在");
} 别的 {
    print_r("确实存在");
};

函数 CheckImageExists($imgUrl) {
    如果(fopen($imgUrl,“r”)){
        返回真;
    } 别的 {
        返回假;
    };
};

但无论图像是否实际存在,它都会返回“true”(上面的图像应该,但将其更改为乱码,它仍然会返回“true”)。我有一种感觉,可能是因为如果 URL 不存在,它会重定向到网站的主页。但我不知道如何检测。

谢谢你的帮助!

4

4 回答 4

2

使用卷曲

获取资源后,您可以获得调用curl_errno()的错误代码。

于 2010-05-20T17:19:41.277 回答
0

您很有可能将一个 HTML 页面返回到您的 $imgUrl 中,其中包含“404 image not found”或类似的内容。

您应该能够检查响应以获取指示请求失败或重定向的代码。

于 2010-05-20T17:17:37.253 回答
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;
    };
};
于 2010-05-20T17:35:45.887 回答
0

让它与 Seb 的方法一起工作。只是使用 YQL 来检查页面的实际内容并确定它是否是错误的。

于 2010-05-20T21:07:53.293 回答