【问题标题】:PHP echo all subfolder imagesPHP 回显所有子文件夹图像
【发布时间】:2018-02-16 12:07:18
【问题描述】:

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

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

我试过了

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

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

是否有类似“通配符”的选项可以检查所有子文件夹并回显foreach 子文件夹名称及其内容?

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

【问题讨论】:

  • PHP Glob 不支持 ** 通配符。你必须编写一个递归函数来做到这一点。

标签: php foreach echo subdirectory scandir


【解决方案1】:

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");

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2014-09-17
    相关资源
    最近更新 更多