首页 > 解决方案 > 使用 glob(..., GLOB_BRACE) 按文件名排序

问题描述

假设我在当前文件夹中有这些文件:

a.txt
b.txtbis
c.txt
+ other files with other extensions

我想用 PHP 在一个列表中列出.txt和文件,并且我希望结果按文件名排序。很遗憾:.txtbisglob

它们都没有按应有的方式排序。

在中使用大括号时如何按文件名排序列表glob

标签: phpglobbraces

解决方案


Glob 按完整路径名(路径 + 名称 + 扩展名)按字母顺序对文件进行排序。如果只想按(基)名称排序,可以使用 usort:

$files = glob("*.{txtbis,txt}", GLOB_BRACE);

usort(
  $files, 
  function($a,$b){
    return basename($a) <=> basename($b);
  }
);

var_dump($files);

推荐阅读