glob

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

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

描述

glob(string $pattern, int $flags = 0): array|false

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

参数

pattern

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

特殊字符

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

flags

有效标志

GLOB_BRACE (int)
将 {a,b,c} 展开以匹配 'a'、'b' 或 'c'

注意: GLOB_BRACE 在一些非 GNU 系统上不可用,例如 Solaris 或 Alpine Linux。

GLOB_ERR (int)
在读取错误时停止(例如不可读目录),默认情况下忽略错误。
GLOB_ONLYDIR (int)
仅返回与模式匹配的目录条目
GLOB_MARK (int)
在返回的每个目录中添加一个斜杠(Windows 上为反斜杠)
GLOB_NOSORT (int)
按它们在目录中出现的顺序返回文件(不排序)。当不使用此标志时,路径名将按字母顺序排序
GLOB_NOCHECK (int)
如果找不到与之匹配的文件,则返回搜索模式
GLOB_NOESCAPE (int)
反斜杠不会引用元字符
GLOB_AVAILABLE_FLAGS (int)
所有 GLOB_* 标志组合在一起。等效于 0 | GLOB_BRACE | GLOB_MARK | GLOB_NOSORT | GLOB_NOCHECK | GLOB_NOESCAPE | GLOB_ERR | GLOB_ONLYDIR

返回值

返回一个包含匹配的文件/目录的数组,如果没有文件匹配则返回一个空数组,或者在出错时返回 false

注意:

在某些系统上,无法区分空匹配和错误。

示例

示例 #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

注释

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

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

参见

添加注释

用户贡献的注释 1 条注释

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

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