- <?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);
- //该片段来自于http://www.codesnippet.cn/detail/260520149665.html
来源: http://www.codesnippet.cn/detail/260520149665.html