这个程序将查找到的文件存入$files数组中,可通过$options传递对目录的处理,可以通过添加exclude忽略指定的目录。
/**
* 递归查找目录下所有文件。
*/
function scanfiles($dirs,$path='',$root,&$files,&$options){
if($dirs==false){
return ;
}
foreach($dirs as $val){
if($val=='.' || $val=='..' || in_array($val,$options['exclude'])){//排除的文件或目录
continue;
}
if(is_file($root.'/'.$path.$val)){//如果是文件则存入数组
$files[]['name']=$path.$val;
}elseif(is_dir($root.'/'.$path.$val)){//如果是目录,则打开目录,继续查找
if(empty($path)){
$nextpath=$val.'/';
}else{
$nextpath=$path.$val.'/';
}
$dir=$root.'/'.$nextpath;
scanfiles(@scandir($dir),$nextpath,$root,$files,$options);
}
}
}
One comment on “递归查找目录下所有文件”
[…] 在oschina上分享了自己写的递归查找指定目录下所有文件的php代码。今天有位网友ichenshy分享了一个用迭代实现的例子。仔细阅读,这段代码写得也很精辟。比我的递归方法效果更好,他使用堆栈的办法我从未想到过,特收藏备用。 […]