如何在php中列出目录及其子目录的所有文件?

时间:2015-11-04 07:16:47

标签: php file

如何查找目录或文件夹及其子目录或子文件夹的所有文件名。 我正在使用scandir(),但它仅从根目录返回文件和子目录名称。 如果有人有解决方案,请建议。

<?php
    $dir    = 'mydir/';
    $files  = scandir($dir);
?> 

4 个答案:

答案 0 :(得分:0)

试试这个

  $filelist = array();
  if ($handle = opendir(".")) 
  {
    while ($entry = readdir($handle)) {
        if (is_file($entry)) {
            $filelist[] = $entry;
        }
    }
  echo "<pre>";
print_r($filelist);
closedir($handle);
}

答案 1 :(得分:0)

答案here可以为您提供更多亮点。

我会做什么(比如在答案中)是为每个目录运行一个foreach循环,然后列出目录中的文件。基本上只需冲洗并重复。 PHP执行的scandir()函数类似于Linux中的ls命令。

答案 2 :(得分:0)

这是我在我的项目中使用的,这只会返回文件而不是文件夹,而且它是递归的。

$dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("mydir/") );
$dir->setFlags(4096 | 8192);

foreach ($dir as $value) {
    echo $dir->getSubPathname();
}

答案 3 :(得分:0)

我找到了解决方案。 我创建了一个脚本,通过使用它,我们可以获取或列出目录及其子目录的所有文件。 它的工作正常。在那里mydir假定为目录路径

function listDirFiles($dir){
    foreach(glob("$dir/*") as $ff){          
            is_dir($ff) ? listDirFiles($ff) : $GLOBALS['a'][] = basename($ff);        
    }
}

listDirFiles('mydir');
echo "<pre>", print_r($GLOBALS['a']), "</pre>";