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

PHP 有 file_exists。

bool file_exists( string $filename)
检查文件或目录是否存在。

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

于 2013-05-30T15:35:51.113 回答
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 回答
0

PHP 有一个名为file_exists的便捷函数,它返回一个布尔值。

于 2013-05-30T15:37:04.623 回答