PHP遍历目录文件(条件筛选) http://www.lanzusheng.cn/Article/28.html原有基础上改进(加了是否显示子目录文件) 无 ?php/** * * 遍历目录文件,可按条件匹配 * @param string $dir * @param array $file_type按条件筛选(字符串:包含该字符串的文件;数组:
PHP遍历目录文件(条件筛选)
<?php /** * * 遍历目录文件,可按条件匹配 * @param string $dir * @param array $file_type按条件筛选(字符串:包含该字符串的文件;数组:按第一个元素正则匹配) * @param int $is_hidden_sub_file是否不显示子目录文件(默认显示全部文件) * @param int $show_sub_arr是否以数组形式显示子目录及文件 * @param int $is_show_dir是否加上目录(目录/文件名) */ function myScanDir($dir,$file_type='',$is_hidden_sub_file=0,$show_sub_arr=0,$is_show_dir=0){ $file_arr = array(); $files = scandir($dir); if(!empty($files) && count($files)!=2){ foreach($files as $k=>$filename){ if($filename!='.' && $filename!='..'){ //不显示子目录 if(is_dir($dir.'/'.$filename)){ if(!empty($is_hidden_sub_file)) continue; } //是否筛选指定文件 if(empty($file_type)){ if(is_dir($dir.'/'.$filename)){ if(empty($show_sub_arr)){ $file_arr = array_merge($file_arr,myScanDir($dir.'/'.$filename,'',0,$is_show_dir)); }else{ //以数组形式显示子目录文件(目录名为键名) $sub_files = myScanDir($dir.'/'.$filename,'',$show_sub_arr); if(!empty($sub_files)) $file_arr[$filename] = $sub_files; } }else{ //是否加上目录(目录/文件) if(empty($is_show_dir)){ $file_arr[] = $filename; }else{ $file_arr[] = $dir.'/'.$filename; } } }else{ //递归 if(is_dir($dir.'/'.$filename)){ if(empty($show_sub_arr)){ $file_arr = array_merge($file_arr,myScanDir($dir.'/'.$filename,$file_type,0,$is_show_dir)); }else{ $sub_files = myScanDir($dir.'/'.$filename,$file_type,$show_sub_arr); if(!empty($sub_files)) $file_arr[$filename] = $sub_files; } }else{ if(is_array($file_type)){ //正则匹配 if(preg_match($file_type[0],$filename)){ if(empty($is_show_dir)){ $file_arr[] = $filename; continue; }else{ $file_arr[] = $dir.'/'.$filename; continue; } } }else{ //字符串查找 if(false!=stristr($filename,$file_type)){ if(empty($is_show_dir)){ $file_arr[] = $filename; }else{ $file_arr[] = $dir.'/'.$filename; } continue; } } } } } } } return $file_arr; } $files = myScanDir(dirname(__FILE__),'.php',1); var_dump($files);