PHP的glob()可以以不区分大小写的方式查找文件吗?

ale*_*lex 40 php glob case-insensitive

我想要一个目录中的所有CSV文件,所以我使用

glob('my/dir/*.CSV')
Run Code Online (Sandbox Code Playgroud)

但是,这不会找到具有小写CSV扩展名的文件.

可以

glob('my/dir/*.{CSV,csv}', GLOB_BRACE);
Run Code Online (Sandbox Code Playgroud)

但有没有办法允许所有混合案例版本?或者这只是一个限制glob()

Ign*_*ams 56

Glob模式支持字符范围:

glob('my/dir/*.[cC][sS][vV]')
Run Code Online (Sandbox Code Playgroud)

  • @JohnK:"但有没有办法允许所有混合案例版本?" (3认同)

ale*_*lex 38

你可以做到这一点

$files = glob('my/dir/*');

$csvFiles =  preg_grep('/\.csv$/i', $files);
Run Code Online (Sandbox Code Playgroud)

  • 同意.看来你无法将GLOB_BRACE与字符范围结合起来,所以我最终使用glob + preg_grep一次对多种文件格式进行不区分大小写的搜索.谢谢你的提示! (2认同)

int*_*ted 6

glob('my/dir/*.[cC][sS][vV]')应该这样做.是的,它有点难看.