glob
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
寻找与模式匹配的文件路径
glob ( string $pattern [, int $flags = 0 ] ) : array
依照 libc glob() 函数使用的规则寻找所有与 pattern 匹配的文件路径
类似于一般 shells 所用的规则一样
不进行缩写扩展或参数替代

参数
pattern
The pattern.
No tilde expansion or parameter substitution is done.

flags
有效标记
GLOB_MARK - 在每个返回的项目中加一个斜线
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误

返回值
返回一个包含有匹配文件/目录的数组。如果出错返回 FALSE。
Note:
On some systems it is impossible to distinguish between empty match and an error.


怎样用 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

注释
Note: 此函数不能作用于远程文件,被检查的文件必须是可通过服务器的文件系统访问的。
Note: 此函数在一些系统上还不能工作(例如一些旧的 Sun OS)
Note: GLOB_BRACE 在一些非 GNU 系统上无效,比如 Solaris


function i_scan_dir($pattern, $flags = null)
{
    $files = glob($pattern, $flags);
    if (empty($files)) {
        $files = [];
    } else {
        $files = array_map('basename', $files);
    }
    return $files;
}
// i_scan_dir("/index*.html", GLOB_ONLYDIR);