目录中的文件名列表,包括文件夹和子文件夹

时间:2013-02-01 07:42:30

标签: php

我想列出目录wallpaper/中的所有文件。这个目录里面有超过1000个文件夹,主要是像angelina joulie等名人名字,在那个文件夹里面有几个图像供那个名人使用。

我想列出所有带有总路径的文件 比如http://xyz.com/wallpaper/angelina joulie/angeli1243.jpg

我尝试scandir() readdir() glob(),但所有人都只列出当前目录。

请告诉我们如何列出所有文件的完整路径,包括给定目录的子目录

2 个答案:

答案 0 :(得分:0)

你需要一个递归函数。这是一个经过测试和正常工作的示例函数。

function recursiveReaddir($folderPath = '.')
{
    $ignore = array('cgi-bin', '.', '..');
    $handle = @opendir($folderPath);
    while (false !== ($file = readdir($handle))) {

        if (!in_array($file, $ignore)) {
            if (is_dir("$folderPath/$file")) {
                $return[$file] = recursiveReaddir("$folderPath/$file");
            } else {
                $return [] = $file;
            }
        }
    }

    closedir($handle);
    return $return;
}
$rez = recursiveReaddir('path/to/file');
print_r($rez);

答案 1 :(得分:0)

如果您只需要进入两个级别,那么使用glob()就会容易得多:

glob("wallpaper/*/*")

将遍历wallpaper/下的所有直接目录。