我使用glob()来检索与规则匹配的大量照片。该页面位于/stocklist/222/page.php.
,照片位于/stocklist/photo/
我尝试过使用下面的代码,但似乎没有返回任何结果。
$photo = glob("/photo/".$row['Scientific']."?.jpg");
我感觉它正在寻找stocklist/222/photo
编辑:
以下建议(@Niels Keurentjes,@ Gasim),香港专业教育学院使用
echo getcwd() ;
$photo = (glob('/var/www/web/stocklist/photo/'.$row['Scientific'].'*.jpg'));
print_r(glob('/var/www/web/stocklist/photo/'.$row['Scientific'].'*.jpg'));
产生以下内容:
/var/www/web/stocklist
Array ( [0] => /var/www/web/stocklist/photo/Pituophis deppei jani.jpg
[1] => /var/www/web/stocklist/photo/Pituophis deppei jani1.jpg )
但是图像显示为丢失的文件。
答案 0 :(得分:1)
您的解决方案可能是:
$photo = "../photo/" . $row['Scientific'] . ".jpg";
glob()返回的数组不是字符串。
尝试执行以下操作以了解glob
正在做的更多内容:
print_r(glob("../photo/".$row['Scientific']."/*"));
因此,您将拥有一个包含给定文件夹中所有.jpg
个文件的数组,例如:
Array
(
[0] => /stocklist/222/photo/1.jpg
[1] => /stocklist/222/photo/2.jpg
[2] => /stocklist/222/photo/3.jpg
[3] => /stocklist/222/photo/4.jpg
[4] => /stocklist/222/photo/5.jpg
[5] => /stocklist/222/photo/6.jpg
[6] => /stocklist/222/photo/7.jpg
)
如果你的例子是正确的,你可以使用以下方式访问阵列中的第一张照片:
$photo[0];
您的代码中的另一个问题是,您使用?
作为通配符运算符但却无法识别,应该替换为*
。
根据你的上一次更新,你的文件名中有空格 - 这是一个不好的做法,从我的角度来看,你应该修复它!
示例,我将如何进一步使用它,而不是使用for
循环:
$photos = glob('/var/www/web/stocklist/photo/'.$row['Scientific'].'*.jpg');
if (!empty($photos))
{
echo "<ul id='slide'>";
foreach ($photos as $photo)
{
echo "<li><img src='" . $photo . "' alt='' class='img-right'></li>";
}
echo "</ul>";
}
说明强>
glob()函数根据libc glob()函数使用的规则搜索匹配模式的所有路径名,这类似于常见shell使用的规则。
返回值:
返回包含匹配文件/目录的数组,如果没有文件匹配则返回空数组,如果错误则返回FALSE。