PHP中使用glob函数快速查询指定目录文件的方法
在PHP开发中,遍历或查找特定文件是常见需求。相较于基础的`scandir()`,`glob()`函数支持通配符模式匹配,能更灵活地筛选文件。本文详细解析其基本用法、多后缀匹配技巧以及如何获取文件的绝对路径。
glob() 函数的基本作用
glob() 函数寻找与给定模式匹配的文件路径。它返回一个包含匹配文件名的数组,若未找到匹配项或发生错误则返回 false。该函数比 scandir() 更强大,因为它允许你直接指定文件的特征(如后缀名),而无需先读取所有文件再过滤。
具体操作场景与代码示例
第1步:搜索当前目录所有文件
若要列出当前目录下所有文件,可以使用双星号通配符 *.*。这适用于需要查看目录下所有资源的情况。
$array = glob('*.*');
print_r($array );
执行结果示例:
Array
(
[0] => 1.php
[1] => 10.php
[2] => 11.php
[3] => 2.asp
[4] => 3.asp
[5] => 4.aspx
[6] => 5.html
[7] => 6.php
[8] => 7.php
[9] => 8.php
[10] => 9.php
)
第2步:筛选特定后缀名的文件
如果只需查找特定类型的文件,例如只搜索当前目录下的 PHP 脚本,可使用 *.php 作为模式。这种方式能显著减少内存占用和处理时间,特别是当目录下文件众多时。
$array = glob('*.php');
print_r($array );
执行结果示例:
Array
(
[0] => 1.php
[1] => 10.php
[2] => 11.php
[3] => 6.php
[4] => 7.php
[5] => 8.php
[6] => 9.php
)
第3步:使用 GLOB_BRACE 匹配多种后缀
有时需要一次性获取多种格式的文件(如同时处理 PHP 和 ASPX 文件)。可以通过组合模式并使用 GLOB_BRACE 标志来实现。
$files = glob('*.{php,aspx}', GLOB_BRACE);
print_r( $files );
执行结果示例:
Array
(
[0] => 1.php
[1] => 10.php
[2] => 11.php
[3] => 6.php
[4] => 7.php
[5] => 8.php
[6] => 9.php
[7] => 4.aspx
)
第4步:在子目录中按前缀搜索文件
glob() 同样支持指定路径和文件名前缀。例如,在上一级的 05-15 文件夹中,查找以数字 1 开头的 PHP 文件。
$files = glob('../05-15/1*.php');
print_r($files);
执行结果示例:
Array
(
[0] => ../05-15/1.php
[1] => ../05-15/10.php
[2] => ../05-15/11.php
)
第5步:将相对路径转换为绝对路径
上述示例返回的多为相对路径或工作目录下的路径。若程序需要完整的磁盘绝对路径(常用于文件包含或权限检查),可配合 array_map() 和 realpath() 函数进行转换。
// 假设 $files 已通过 glob 获取
$absolute_files = array_map('realpath', $files);
print_r($absolute_files);
执行结果示例:
Array
(
[0] => D:\www\jb51.net\1.php
[1] => D:\www\jb51.net\10.php
[2] => D:\www\jb51.net\11.php
)
总结
glob() 是 PHP 中处理文件系统查询的高效工具,尤其擅长基于模式的批量文件检索。相比 scandir() 仅返回目录列表,glob() 能在一步操作中完成筛选,极大简化了代码逻辑。结合 GLOB_BRACE 和多路径语法,它可以覆盖绝大多数日常文件查找场景。
以上就是PHP使用glob函数快速查询指定目录文件方法的详细内容,更多关于PHP glob函数应用的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













