Php 获取glob方法中文件夹的名称

Php 获取glob方法中文件夹的名称,php,Php,我用glob在我的带有嵌套文件夹的图像文件夹中进行迭代以查找图像。结构如下所示: -> images -> John Doe (some names) -> 21-09-2018 (some dates) -> 23-09-2018 (some dates) 现在,我想获取“name”文件夹的名称和图像所在的“date”文件夹的名称。如何在现有循环中获取这些数据并将其推送到阵列中 $fileArray = []; $path = 'http:/

我用glob在我的带有嵌套文件夹的图像文件夹中进行迭代以查找图像。结构如下所示:

-> images
   -> John Doe (some names)
     -> 21-09-2018 (some dates)
     -> 23-09-2018 (some dates)
现在,我想获取“name”文件夹的名称和图像所在的“date”文件夹的名称。如何在现有循环中获取这些数据并将其推送到阵列中

$fileArray = [];
$path = 'http://example.com/demo';

foreach (glob("images/*/*/*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE) as $curFilename)
{
$completePath = $path . '/' . $curFilename;

$FilenameWithoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', basename($curFilename));

$basename = basename($curFilename);

if (strpos($FilenameWithoutExt, 'R') !== false) {
    $eye = 'R';
}
else if (strpos($FilenameWithoutExt, 'L') !== false) {
    $eye = 'L';
} else {
    $eye = '';
}

$caption =  $eye . ' - ' . date("d.m.Y");

$curFileObj = new mFile;
$curFileObj->caption = $caption;
$curFileObj->url = $completePath;
$curFileObj->thumbUrl = $completePath;  
$curFileObj->date = date("d.m.Y");
$curFileObj->eye = $eye;
$curFileObj->basename = $basename;
array_push($fileArray, $curFileObj);
}
echo json_encode($fileArray);

SplFileInfo

您可以从文件路径名创建一个
SplFileInfo
对象

例如:

$file = new SplFileInfo($curFilename);
echo $file->getPath();
将输出文件的路径

你可以使用更多的方法,我认为你应该在这个对象中找到你需要的一切

递归迭代器

还有类似于
recursiveiterator
的东西,它将返回
SplFileInfo
的数组,而不是像
glob()
那样只返回字符串路径名

您可以像这样使用它:

$dir_iterator = new RecursiveDirectoryIterator('images/*/*/');
$iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
但在内部,您必须检查扩展是否符合您的期望


手册