Heim >php教程 >php手册 >PHP遍历目录文件(条件筛选)

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

WBOY
WBOYOriginal
2016-06-06 19:34:06925Durchsuche

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

PHP遍历目录文件(条件筛选)
http://www.lanzusheng.cn/Article/28.html原有基础上改进(加了是否显示子目录文件)
<?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);
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:框架的view类Nächster Artikel:json 去空格