如果我只想搜索子目录和某些文件类型怎么办? 前任。我有一个名为“stuff”的文件夹,其中上传了随机的东西。并说我只想搜索“stuff”中的子文件夹和 .jpg 文件,仅此而已。我知道只搜索 .jpg 是......
$array = glob('stuff/{*.jpg}', GLOB_BRACE);
并且只搜索子目录是......
$array = glob('stuff/*', GLOB_ONLYDIR);
...但是我如何将两者结合起来而不得到任何其他不需要的文件? GLOB_BRACE 的子目录有模式吗?
最佳答案
这个递归函数应该可以解决问题:
function recursiveGlob($dir, $ext) {
$globFiles = glob("$dir/*.$ext");
$globDirs = glob("$dir/*", GLOB_ONLYDIR);
foreach ($globDirs as $dir) {
recursiveGlob($dir, $ext);
}
foreach ($globFiles as $file) {
print "$file\n"; // Replace '\n' with '<br />' if outputting to browser
}
}
用法:recursiveGlob('C:\Some\Dir', 'jpg');
如果你想让它对单个文件做其他事情,只需替换 print "$file\n"
部分。
该函数在其 glob
搜索中可以更具体,并且只匹配目录以及具有指定文件扩展名的文件,但我这样做是为了简单和透明。
关于php——仅用于搜索目录和 .jpg 的 glob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9755458/