PHP file_get_contents并不真正确定文件是否存在

时间:2013-05-30 15:33:47

标签: php

我正在尝试使用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;
    }

}

?>

3 个答案:

答案 0 :(得分:4)

PHP有file_exists。

  

bool file_exists(字符串$filename
  检查文件或目录是否存在。

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

答案 1 :(得分: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;
    }

}

答案 2 :(得分:0)

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