php——仅用于搜索目录和 .jpg 的 glob

标签 php file glob

如果我只想搜索子目录和某些文件类型怎么办? 前任。我有一个名为“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/

相关文章:

php - Zend 安全 SQL 查询?

php - 如何使用 php 压缩/降低 base64 图像的质量?

c - 尝试读取宽字符会给出 EOF

javascript - 使用 NPM glob,如何更改脚本实际所在的目录?

linux - Bash 脚本复制文件夹和内容而不需要一个文件

php - 哪个PHP shell ?

javascript - PHP登录脚本重定向在登录后不起作用

java - 将文件从 OS 拖放到 JTable java

file - 使用 tcsh 终端创建多个空文件

python-3.x - 动态创建文件夹并将 csv 文件写入该文件夹