PHP Conference Japan 2024

glob

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

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

描述

glob(字符串 $pattern, 整数 $flags = 0): 数组|false

函数 glob() 根据 libc glob() 函数使用的规则搜索与 pattern 匹配的所有路径名,该规则类似于常用 shell 使用的规则。

在 Unix 系统和 macOS 上的行为由系统的 glob() 实现决定。在 Windows 上,使用符合 glob() 的 POSIX 1003.2 定义的实现,并且它包含一个扩展来处理 [!...] 约定以否定范围。

参数

pattern

模式。不会执行波浪号扩展或参数替换。

特殊字符

  • * - 匹配零个或多个字符。
  • ? - 匹配正好一个字符(任何字符)。
  • [...] - 匹配一组字符中的一个字符。如果第一个字符是 !,则匹配该组中不存在的任何字符。
  • \ - 转义后面的字符,除非使用了 GLOB_NOESCAPE 标志。

flags

任何 GLOB_* 常量。

返回值

返回一个包含匹配的文件/目录的数组,如果未匹配任何文件则返回空数组,或者在出错时返回 false。除非使用了 GLOB_NOSORT,否则名称将按字母数字排序。

示例

示例 #1 glob() 如何方便地替代 opendir() 及其相关函数。

<?php
foreach (glob("*.txt") as $filename) {
echo
"$filename size " . filesize($filename) . "\n";
}
?>

上面的示例将输出类似以下内容

funclist.txt size 44686
funcsummary.txt size 267625
quickref.txt size 137820

示例 #2 使用更复杂模式的示例

<?php
foreach (glob("path/*/*.{txt,md}", \GLOB_BRACE) as $filename) {
echo
"$filename\n";
}
?>

上面的示例将输出类似以下内容

path/docs/mailinglist-rules.md
path/docs/README.md
path/docs/release-process.md
path/pear/install-pear.txt
path/Zend/README.md

注释

注意: 此函数不适用于 远程文件,因为要检查的文件必须可以通过服务器的文件系统访问。

注意: 此函数在某些系统(例如旧的 Sun OS)上不可用。

参见

添加注释

用户贡献的注释 1 条注释

匿名
3 年前
包含点文件,但不包括 . 和 .. 特殊目录,使用 .[!.]*

<?php
$all_files
= array_merge(glob('.[!.]*'), glob('*'));
// 或者
$all_files = glob('{.[!.],}*', GLOB_BRACE);
?>
To Top