3

イメージがリモート サーバーに存在するかどうかを検出しようとしています。ただし、いくつかの方法を試しましたが、どれも機能しません。

今、私はこれを使用しようとしています:

if (!CheckImageExists("http://img2.netcarshow.com/ABT-Audi_R8_2008_1024x768_wallpaper_01.jpg")) {
    print_r("存在しません");
} そうしないと {
    print_r("存在します");
};

関数 CheckImageExists($imgUrl) {
    if (fopen($imgUrl, "r")) {
        true を返します。
    } そうしないと {
        false を返します。
    };
};

ただし、画像が実際に存在するかどうかに関係なく「true」を返します(上の画像は意味不明に変更しても「true」が返されます)。URL が存在しない場合、サイトのホームページにリダイレクトされるためと思われます。しかし、それを検出する方法がわかりません。

助けてくれてありがとう!

4

4 に答える 4

2

cURLを使用します。

リソースをフェッチした後、 curl_errno()を呼び出してエラー コードを取得できます。

于 2010-05-20T17:19:41.277 に答える
0

Sebの方法で動作するようになりました。YQLを使用して、ページの実際のコンテンツを検査し、それがエラーかどうかを判断しました。

于 2010-05-20T21:07:53.293 に答える
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

「404 image not found」などを含む HTML ページが $imgUrl に返される可能性があります。

リクエストが失敗したかリダイレクトされたことを示すコードのレスポンスを確認できるはずです。

于 2010-05-20T17:17:37.253 に答える