PHP遍历文件函数glob,比opendir和readdir效率高(亲测,效率高出至少一倍以上),而且使用起来相对灵活,尤其针对遍历文件名为部分未知的情况,书写更为方便。
在遍历非同级目录文件时,因为glob函数返回是带路径的文件名(如下第三个例子),所以如果需要取文件名则需要使用basename函数。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php //第一种方法 echo '第一种方法<br>'; foreach (glob("mall_*.csv") as $filename) { echo $filename.'<br>'; } echo '============================<br><br>'; //第二种方法 返回数组 echo '第二种方法<br>'; $filenamearr = glob("mall_*.csv"); echo '<pre>'; print_r($filenamearr); echo '</pre>'; ?> echo '============================<br><br>'; //第三种方法 遍历非同级目录的文件时 返回值是路径和文件名 如:session/mall_xxx.csv echo '第三种方法<br>'; foreach (glob("session/mall_*.csv") as $filename) { echo $filename.'<br>'; echo basename($filename).'<br>';//取文件名(带后缀) } echo '============================<br><br>'; |
glob函数
函数说明:array glob ( string $pattern [, int $flags ] )
功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的,不能用于远程文件)
参数说明:第一个参数:匹配模式;第二个可选参数:
GLOB_MARK – 在每个返回的项目中加一个斜线
GLOB_NOSORT – 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK – 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE – 反斜线不转义元字符
GLOB_BRACE – 扩充 {a,b,c} 来匹配 ‘a’,’b’ 或 ‘c’
GLOB_ONLYDIR – 仅返回与模式匹配的目录项
GLOB_ERR – Stop on read errors (like unreadable directories), by default errors are ignored.
参数 GLOB_BRACE
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php //示例 $filenamearr = glob("setting/a{dmin,rticle*}.csv", GLOB_BRACE); echo '<pre>'; print_r($filenamearr); echo '</pre>'; /* 返回 Array ( [0] => setting/admin.csv [1] => setting/article.csv [2] => setting/article_data.csv ) */ ?> |