Php 获取glob方法中文件夹的名称
我用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:/
-> 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);
但在内部,您必须检查扩展是否符合您的期望
手册