使用 glob(..., GLOB_BRACE) 按文件名排序
Sort by filename with glob(..., GLOB_BRACE)
假设我在当前文件夹中有这些文件:
a.txt
b.txtbis
c.txt
+ other files with other extensions
我想用 PHP glob
在单个列表中列出 .txt
和 .txtbis
文件,我希望结果按文件名排序。不幸的是:
glob("*.{txtbis,txt}", GLOB_BRACE)
给出 Array ( [0] => b.txtbis [1] => a.txt [2] => c.txt )
glob("*.{txt,txtbis}", GLOB_BRACE)
给出 Array ( [0] => a.txt [1] => c.txt [2] => b.txtbis )
None 已按应有的顺序排序。
如何在 glob
中使用大括号时按文件名对列表进行排序?
Glob 按完整路径名(路径 + 名称 + 扩展名)的字母顺序对文件进行排序。如果只想按(基本)名称排序,可以使用 usort:
$files = glob("*.{txtbis,txt}", GLOB_BRACE);
usort(
$files,
function($a,$b){
return basename($a) <=> basename($b);
}
);
var_dump($files);
假设我在当前文件夹中有这些文件:
a.txt
b.txtbis
c.txt
+ other files with other extensions
我想用 PHP glob
在单个列表中列出 .txt
和 .txtbis
文件,我希望结果按文件名排序。不幸的是:
glob("*.{txtbis,txt}", GLOB_BRACE)
给出Array ( [0] => b.txtbis [1] => a.txt [2] => c.txt )
glob("*.{txt,txtbis}", GLOB_BRACE)
给出Array ( [0] => a.txt [1] => c.txt [2] => b.txtbis )
None 已按应有的顺序排序。
如何在 glob
中使用大括号时按文件名对列表进行排序?
Glob 按完整路径名(路径 + 名称 + 扩展名)的字母顺序对文件进行排序。如果只想按(基本)名称排序,可以使用 usort:
$files = glob("*.{txtbis,txt}", GLOB_BRACE);
usort(
$files,
function($a,$b){
return basename($a) <=> basename($b);
}
);
var_dump($files);