我有一个包含图像的子文件夹的目录.我需要在一个页面上显示所有这些,以及它们的文件夹名称,所以像这样:
> echo子文件夹名称
回声图像,图像,图像
> echo Subfolder2名称
echo image2,image2,image2
>等
我试过用了
$images = glob($directory . "*.jpg");
但问题是我必须在$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;
}
像$files = recursiveGlob(“mainDir / ** / * .jpg”)那样使用它;