0

file_get_contents を使用して、ディレクトリに .jpg が存在するかどうかをテストしようとしています。存在する場合は表示して、ループを停止します。

これは、.jpg がディレクトリにない場合を除いて、うまく機能しているように見えます。最大 10 個の画像まで、不足しているサムネイルを探して表示し続けます。

file_get_contents 以外に何かありますか? 同じ結果で絶対パスも使用しようとしました。

<?
$image = "<br>";
$ListingRid = $row['MLS_NUMBER'];
$img_cnt = 1;
for ($c=1;$c<11;$c++) {
    if ($c<10)
        $c_ext = "".$c;
    else
        $c_ext = $c;

    if (file_get_contents("http://mydomain.com/images/{$ListingRid}_{$c_ext}.jpg"))
        $image .= "<img src=http://mydomain.com/images/{$ListingRid}_{$c_ext}.jpg alt='' width='100' height='75' border='0' />";
    else
        $c=12;

    $img_cnt++;
    if ($img_cnt == 3) {
        $image .= "<br>";
        $img_cnt = 0;
    }

}

?>
4

3 に答える 3

4

cURL を使用して、HTTP 経由でファイルが存在するかどうかを確認できます。また、CURLOPT_NOBODY オプションを使用すると、実際にコンテンツをダウンロードしなくてもファイルの存在を確認できます。

$ch = curl_init("http://mydomain.com/images/{$ListingRid}_{$c_ext}.jpg");

curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

var_dump($retcode);

あなたの場合:

<?php

$image = "<br>";
$ListingRid = $row['MLS_NUMBER'];
$img_cnt = 1;
for ($c=1;$c<11;$c++) {
    if ($c<10)
        $c_ext = "".$c;
    else
        $c_ext = $c;


    $ch = curl_init("http://mydomain.com/images/{$ListingRid}_{$c_ext}.jpg");

    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_exec($ch);
    $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($retcode == '200')
        $image .= "<img src=http://mydomain.com/images/{$ListingRid}_{$c_ext}.jpg alt='' width='100' height='75' border='0' />";
    else
        $c=12;

    $img_cnt++;
    if ($img_cnt == 3) {
        $image .= "<br>";
        $img_cnt = 0;
    }

}
于 2013-05-30T15:37:07.523 に答える
4

PHP には file_exists があります。

bool file_exists( string $filename)
ファイルまたはディレクトリが存在するかどうかを確認します。

http://php.net/manual/en/function.file-exists.php

于 2013-05-30T15:35:51.113 に答える
0

PHP には、bool を返すfile_existsという便利な関数があります。

于 2013-05-30T15:37:04.623 に答える