欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP遍历目录文件(条件筛选)

程序员文章站 2022-04-15 12:26:58
...

PHP遍历目录文件(条件筛选) http://www.lanzusheng.cn/Article/28.html原有基础上改进(加了是否显示子目录文件) 无 ?php/** * * 遍历目录文件,可按条件匹配 * @param string $dir * @param array $file_type按条件筛选(字符串:包含该字符串的文件;数组:

PHP遍历目录文件(条件筛选)
http://www.lanzusheng.cn/Article/28.html原有基础上改进(加了是否显示子目录文件)
$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);