Joh*_*n K 5 php foreach echo scandir subdirectory
我有一个包含子文件夹的目录。我需要将所有这些以及它们的文件夹名称显示在一页上,因此如下所示:
echo Subfolder name
echo image, image, imageecho Subfolder2 name 
echo image2, image2 , image2我试过使用
$images = glob($directory . "*.jpg");
Run Code Online (Sandbox Code Playgroud)
但是问题是我必须在中精确定义子文件夹名称$directory,例如“ path / folder / subfolder /”;
是否有类似“通配符”的选项可以检查所有子文件夹并回显foreach子文件夹名称及其内容?
另外,由于我无法控制的服务器限制opendir,scandir因此无法在此处应用。
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;
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它$files = recursiveGlob("mainDir/**/*.jpg");