我正在尝试使用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;
}
}
?>
答案 0 :(得分:4)
PHP有file_exists。
bool
file_exists
(字符串$filename
)
检查文件或目录是否存在。
答案 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。