PHP遍历目录文件(条件筛选) http://www.lanzusheng.cn/Article/28.html原有基础上改进(加了是否显示子目录文件) 无 ?php/** * * 遍历目录文件,可按条件匹配 * @param string $dir * @param array $file_type按条件筛选(字符串:包含该字符串的文件;数组:
PHP遍历目录文件(条件筛选)
<?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);
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号