PHP 获取包含子目录的文件列表

标签 php glob

我正在尝试检索目录中的所有图像,包括所有子目录。我目前正在使用

$images = glob("{images/portfolio/*.jpg,images/portfolio/*/*.jpg,images/portfolio/*/*/*.jpg,images/portfolio/*/*/*/*.jpg}",GLOB_BRACE);

这可行,但结果是:

images/portfolio/1.jpg
images/portfolio/2.jpg
images/portfolio/subdirectory1/1.jpg
images/portfolio/subdirectory1/2.jpg
images/portfolio/subdirectory2/1.jpg
images/portfolio/subdirectory2/2.jpg
images/portfolio/subdirectory1/subdirectory1/1.jpg
images/portfolio/subdirectory1/subdirectory1/2.jpg

我希望它一次做一个完整的目录分支,所以结果是:

images/portfolio/1.jpg
images/portfolio/2.jpg
images/portfolio/subdirectory1/1.jpg
images/portfolio/subdirectory1/2.jpg
images/portfolio/subdirectory1/subdirectory1/1.jpg
images/portfolio/subdirectory1/subdirectory1/2.jpg
images/portfolio/subdirectory2/1.jpg
images/portfolio/subdirectory2/2.jpg

非常感谢任何帮助,干杯!

P.S 如果我可以直接获取投资组合下的所有子目录,而不必用通配符具体说明每个目录,那也很棒。

最佳答案

来自 glob example

if ( ! function_exists('glob_recursive'))
{
    // Does not support flag GLOB_BRACE        
   function glob_recursive($pattern, $flags = 0)
   {
     $files = glob($pattern, $flags);
     foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir)
     {
       $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags));
     }
     return $files;
   }
}

关于PHP 获取包含子目录的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109042/

相关文章:

python - 捕获主目录中所有子文件夹中的所有 csv 文件 - Python 3.x

javascript - webpack.config 使用 glob.sync 添加多个条目

javascript - XMLHttpRequest() 无限循环

PHP MySql 打印十进制数

php - FuelPhp 关系查询作为单一结果

git - 忽略名称以 'output' 开头的文件

php exec() 函数和不同的主机

php - 获取大量 Facebook 页面的粉丝数量

ruby - 在 Ruby 1.9.3 上使用大括号进行通配

python - 将不同子文件夹中具有相同名称的 csv 文件合并为一个 csv