PHP列出目录中的所有文件

Mar*_*lor 45 php arrays directory file

可能重复:
使用PHP 获取目录的层次结构使用PHP 获取目录
中所有文件的名称

我已经看到了列出目录中所有文件的函数但是如何列出子目录中的所有文件,所以它返回一个像?

$files = files("foldername");
Run Code Online (Sandbox Code Playgroud)

所以$files 是类似的东西

array("file.jpg", "blah.word", "name.fileext")
Run Code Online (Sandbox Code Playgroud)

Mat*_*hew 100

foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')) as $filename)
{
    // filter out "." and ".."
    if ($filename->isDir()) continue;

    echo "$filename\n";
}
Run Code Online (Sandbox Code Playgroud)


PHP文档:

  • 完整代码(更改foldername) - `<?php`` $ path = realpath('yourfolder/examplefolder');``foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($ path))as $ filename)``{``echo" $ filename \n";``}``?>` (9认同)
  • SPL为+1.IMO的时间(已经有一段时间了)开始使用SPL而不是这些巨大的,缓慢的程序块. (7认同)
  • 哦哇...把它与上面的庞然大物相比较.惊人. (5认同)

Rue*_*uel 21

那你在寻找一个递归的目录列表?

function directoryToArray($directory, $recursive) {
    $array_items = array();
    if ($handle = opendir($directory)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                if (is_dir($directory. "/" . $file)) {
                    if($recursive) {
                        $array_items = array_merge($array_items, directoryToArray($directory. "/" . $file, $recursive));
                    }
                    $file = $directory . "/" . $file;
                    $array_items[] = preg_replace("/\/\//si", "/", $file);
                } else {
                    $file = $directory . "/" . $file;
                    $array_items[] = preg_replace("/\/\//si", "/", $file);
                }
            }
        }
        closedir($handle);
    }
    return $array_items;
}
Run Code Online (Sandbox Code Playgroud)

  • 不要在递归中使用正则表达式,它们往往非常慢!在你的情况下使用rtrim函数. (3认同)
  • 我把它重写为更高效的要点,只返回文件:https://gist.github.com/brucekirkpatrick/8528710 (2认同)