PHP中使用glob函数快速查询指定目录文件的方法

周予安
周予安
发布时间:2026-10-14 | 1人浏览过
原创

在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函数应用的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表