使用glob动态显示具有不同扩展名的图像在PHP中不起作用


Using glob to dynamically display images with different extensions not working in PHP

我在这里的第一个问题。。。我正试图从"fotorama"分区内的文件夹中动态显示图像

<?php
$dir = "/example/images/category/";
$images = glob($dir.'*.{JPG,jpg,gif,png,bmp}', GLOB_BRACE);
foreach ($images as $image) {
echo "<img src='".$dir.".".$image."' />";
};?>

我知道以前有人问过这个问题;但在阅读了所有内容后,我发现:例如(这里,这里和这里(加上许多其他"类似"的问题。它们都推荐了几乎相同的代码(彼此之间的语法略有不同(我已经尝试了我发现的这个代码的每一个变体,但它什么都没有显示。

我知道($dir(很好,因为当我尝试时:echo '<img src="'.$dir."img1.jpg".'">';它显示特定的图像。问题一定在glob部分,因为当我在foreach循环之前使用var_dump($images);时,它显示的是:array(0({}。

我不知道问题出在哪里。。。

编辑:在Sam回答的帮助下,代码现在可以工作了。我发现我忘记更正GLOB_BRACE部分中的某些内容。更正后的代码应该是这样的:

<?php
$dir = "c:/xampp/htdocs/example/images/category/";
$images = glob($dir.'*.{JPG,jpg,gif,png,bmp}', GLOB_BRACE);
foreach ($images as $image) {
echo "<img src='".$image."' />";
};
?>

为了将来参考,在Xampp localhost上glob()函数工作的路径是:C:/xampp/htdocs/your-folder-structure

glob()查找文件系统路径,而image标记的src属性指向一个url位置,可能是相对于您的docroot(但根据您的路由规则,可能在任何位置(。

因此,例如,如果/example/images/ url指向文件系统上的/var/www/example/images/,则需要执行以下操作:

<?php
$dir = "/var/www/example/images/category/";
$url = "/example/images/category/";
$images = glob($dir.'*.{JPG,jpg,gif,png,bmp}', GLOB_BRACE);
foreach ($images as $image) {
    echo "<img src='{$url}{$image}' />";
};?>

不过,在您的特定情况下,您需要弄清楚该目录在文件系统上的位置。