从多个目录中提取所有图像并使用PHP显示它们

时间:2012-03-09 03:01:47

标签: php image directory

我的服务器上有一个名为'images'的文件夹,在该文件夹中我可以有一个文件夹,最多包含10个包含图像的文件夹。

而不是为每个图像写一个标签

<img src="images/people/001.jpg">
<img src="images/landscape/001.jpg">

等等

我可以使用PHP获取主目录“images”中所有文件夹中的所有图像吗?

我对PHP有很少的经验,所以这是我正在努力的事情。

我需要php返回一个'<div class="box"><img src="images/FOLDER/IMAGENAME.jpg"></div>'

数组

也许有人可以提供帮助。

2 个答案:

答案 0 :(得分:3)

function ListFiles($dir) {
    if($dh = opendir($dir)) {
        $files = Array();
        $inner_files = Array();
        while($file = readdir($dh)) {
            if($file != "." && $file != ".." && $file[0] != '.') {
                if(is_dir($dir . "/" . $file)) {
                    $inner_files = ListFiles($dir . "/" . $file);
                    if(is_array($inner_files)) $files = array_merge($files, $inner_files); 
                } else {
                    array_push($files, $dir . "/" . $file);
                }
            }
        }
        closedir($dh);
        return $files;
    }
}
foreach (ListFiles('/path/to/images') as $key=>$file){
    echo "<div class=\"box\"><img src=\"$file\"/></div>";
}

这样的东西?

答案 1 :(得分:3)

一个更简单的解决方案。您可以使用内置的glob功能。假设您的所有图片都是.jpg

$result = array();
$dir    = 'images/';

foreach(glob($dir.'*.jpg') as $filename) {
    $result[] = "<div class=\"box\"><img src=\"$filename\"></div>";
}

然后你可以回显$result或你想要的任何元素。