递归查找目录下所有文件


这个程序将查找到的文件存入$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);
		}
	}
}

 

Have any Question or Comment?

One comment on “递归查找目录下所有文件

[…] 在oschina上分享了自己写的递归查找指定目录下所有文件的php代码。今天有位网友ichenshy分享了一个用迭代实现的例子。仔细阅读,这段代码写得也很精辟。比我的递归方法效果更好,他使用堆栈的办法我从未想到过,特收藏备用。 […]

Comments are closed for this post !!

Archives