从 php 中按特定扩展名过滤的 dir 中获取文件的最佳方法

2022-08-30 11:17:54

可能的重复:
PHP目录中
特定文件的列表使用php scandir($dir)并仅获取图像!

所以现在我有一个目录,我得到了一个文件列表

$dir_f = "whatever/random/";
$files = scandir($dir_f);

但是,这将检索目录中的每个文件。我如何以最有效的方式仅检索具有特定扩展名的文件,例如.ini。


答案 1

PHP有一个很棒的功能,可以帮助您仅捕获所需的文件。它被称为glob()

glob - 查找与模式匹配的路径名

返回包含匹配文件/目录的数组,如果没有匹配的文件,则返回空数组,如果错误时返回 FALSE。

下面是一个示例用法 -

$files = glob("/path/to/folder/*.txt");

这将使用与给定路径中的模式匹配的所有文件的列表填充变量。$files*.txt

参考资料 -


答案 2

如果要搜索多个扩展名,则 preg_grep() 是筛选的替代方法:

 $files = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));

虽然有类似的额外语法。如果您有其他条件,添加不区分大小写的标志,或者可以筛选组合列表,这通常是有意义的。glob~i


推荐