这个程序将查找到的文件存入$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分享了一个用迭代实现的例子。仔细阅读,这段代码写得也很精辟。比我的递归方法效果更好,他使用堆栈的办法我从未想到过,特收藏备用。 […]