注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

php使用glob函数遍历目录查找文件  

2017-04-18 16:58:43|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
还在用readdir遍历目录吗,真out了!PHP有一个函数glob同样可以做到遍历目录查找文件,而且使用也更简单,但是呢,大家都知道这世界没有绝对真理,所以这函数性能吗,就肯定比readdir函数要差那么一点。
函数:array glob ( string $pattern [, int $flags ] )  
参数:
第一个参数pattern:匹配模式;
第二个可选参数:
GLOB_MARK - 在每个返回的项目中加一个斜线 
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
功能:寻找与模式匹配的文件路径,返回包含匹配文件或目录的数组
请注意:被检查的文件必须是服务器本地系统的,不能用于远程文件
下面就用一些简单样例来示范下:
1)比如查找网站images目录下的所有图片。

<?php
//图片后辍,如果需要查询其它文件请更改
$picext="*.{gif,png,jpg}";
//查找图片目录
$dir='./images/';
//开始查找
$files = glob($dir.$picext, GLOB_BRACE);
foreach($files as $v){
echo $v."<br />";
}
?>

执行结果如下:
php使用glob函数遍历目录查找文件 - sinsunson - 天朝布衣田中码农参上
可以看到把图片文件全部查询出来了。如果需要列出所有的文件,请将"*.{gif,png,jpg}"替换成"{,.}*",如果只想查询某一类的文件如php,请将"*.{gif,png,jpg}"替换成"*.php"。
2)之前的使用还有些问题,并不能递归处理目录,所以还需要定制一个函数再来处理下。

<?php
//递归遍历目录函数
function listDir($dir,$pattern){
$dir .= substr($dir, -1) == '/' ? '' : '/';
$dirInfo = array();
//先处理文件
foreach (glob($dir.$pattern,GLOB_BRACE) as $v) {
$dirInfo[] = $v;
}
//再处理目录
foreach (glob($dir.'*') as $v) {
if(is_dir($v)){
//递归
$dirInfo = array_merge($dirInfo, listDir($v,$pattern));
}
}

return $dirInfo;
}
//递归查询图片
$files =listDir("./images/","*.{gif,png,jpg}");
foreach($files as $v){
echo $v."<br />";
}
?>

执行结果如下:
php使用glob函数遍历目录查找文件 - sinsunson - 天朝布衣田中码农参上
 嗯,这样就算是比较完美了,递归连子目录下的文件也可以列出来了,大家有需要可以去试下。


  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018