PHP回显所有子文件夹图像

时间:2017-09-07 16:57:06

标签: php foreach echo subdirectory scandir

我有一个包含图像的子文件夹的目录。我需要在一个页面上显示所有这些,以及它们的文件夹名称,如下所示:

  • echo Subfolder name
    echo image, image, image
  • echo Subfolder2 name
    echo image2, image2 , image2

我尝试过使用

$images = glob($directory . "*.jpg");

但问题是我必须在$directory中准确定义子文件夹名称,例如“path / folder / subfolder /”;

有没有像“通配符”这样的选项会检查所有子文件夹并回显foreach子文件夹名称及其内容?

此外,由于我无法控制的服务器限制,此处无法应用opendirscandir

1 个答案:

答案 0 :(得分:2)

Glob通常有一个递归通配符,写成/ ** /,但PHP Glob函数不支持它。所以唯一的方法就是编写自己的函数。这是一个支持递归通配符的简单方法:

<?php
function recursiveGlob($pattern)
{
    $subPatterns = explode('/**/', $pattern);

    // Get sub dirs
    $dirs = glob(array_shift($subPatterns) . '/*', GLOB_ONLYDIR);

    // Get files in the current dir
    $files = glob($pattern);

    foreach ($dirs as $dir) {
        $subDirList = recursiveGlob($dir . '/**/' . implode('/**/', $subPatterns));

        $files = array_merge($files, $subDirList);
    }

    return $files;
}

$files = recursiveGlob("mainDir/**/*.jpg");

一样使用它