Ala*_*blo 33 php glob directory-browsing
我知道glob可以查找文件夹中的所有文件或仅查找所有目录:
echo "All files:\n";
$all = glob("/*");
var_dump($all);
echo "Only directories\n";
$dirs = glob("/*", GLOB_ONLYDIR);
var_dump($dirs);
Run Code Online (Sandbox Code Playgroud)
但我没有找到能够有效地在一行中找到文件的东西.
$files = array_diff(glob("/*"), glob("/*", GLOB_ONLYDIR));
Run Code Online (Sandbox Code Playgroud)
运行良好,但两次读取目录(即使有一些优化使第二次浏览更快).
Ala*_*blo 55
我终于找到了解决方案:
echo "Only files\n";
$files = array_filter(glob("/*"), 'is_file');
var_dump($files);
Run Code Online (Sandbox Code Playgroud)
但请注意,array_filter将保留数字键:如果需要重新索引数组,请使用array_values.
有一种更简单的方法,只需一行:
$files = glob("/path/to/directory/*.{*}", GLOB_BRACE);
Run Code Online (Sandbox Code Playgroud)
在{*}意味着所有的文件结尾,所以每一个文件,但没有文件夹!
您可以使用GLOB_BRACE文档与已知文件扩展名列表进行匹配:
$files = glob("/path/to/directory/*.{jpg,gif,png,html,htm,php,ini}", GLOB_BRACE);
Run Code Online (Sandbox Code Playgroud)
请参阅:http://www.electrictoolbox.com/php-glob-find-files/