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

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

WBOY
WBOY原創
2016-06-06 19:34:06923瀏覽

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);
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:框架的view类下一篇:json 去空格