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






