当前位置:首页 » 代码教程 » PHP递归目录遍历与图片过滤-实现图库功能

PHP递归目录遍历与图片过滤-实现图库功能

在PHP中递归遍历目录并过滤出图片文件,你可以使用scandir()函数配合is_dir()函数来遍历目录和子目录,然后使用pathinfo()函数来检查文件扩展名,从而过滤出图片文件。以下是一个简单的示例,演示如何实现这一功能:
<?php
// 配置部分
$excludeDirs = ['khimg','tuku2025']; // 要排除的目录
$baseDir = '../';                     // 基准目录
$directory = new RecursiveDirectoryIterator($baseDir, RecursiveDirectoryIterator::SKIP_DOTS);// 创建递归目录迭代器

// 创建目录过滤器
$filter = new RecursiveCallbackFilterIterator($directory, 
function($current) use ($excludeDirs, $baseDir) {
if($current->isDir()) {// 获取相对基准目录的路径
$relativePath = str_replace(realpath($baseDir).DIRECTORY_SEPARATOR,'',$current->getRealPath());
foreach($excludeDirs as $exclude){if(strpos($relativePath, $exclude) === 0){return false;}}}return true;});// 检查是否在排除列表
$iterator = new RecursiveIteratorIterator($filter,RecursiveIteratorIterator::SELF_FIRST);// 创建递归迭代器
$regex = new RegexIterator($iterator,'/^.+\.(jpg|jpeg|png|gif)$/i',RecursiveRegexIterator::GET_MATCH);// 匹配图片文件

// 按目录分类存储
$categorized = [];
foreach ($regex as $match) {
$fullPath = $match[0]; // 完整文件路径
$dir = str_replace('\\', '/', dirname($fullPath));// 获取标准化目录路径(统一使用斜杠)
if(!isset($categorized[$dir])){$categorized[$dir] = [];}// 初始化目录存储空间
//$categorized[$dir][] = basename($fullPath);// 存储文件名(带扩展名)
$categorized[$dir][] = $fullPath; //完整文件名路径
}
?>
调用方法:
<?php
foreach($categorized as $dir => $files) {
$shortDir = str_replace('../', '', $dir);
if(count($files)>1){echo $shortDir;echo count($files);
foreach($files as $file) {echo $file;}
}}
?>
演示地址:http://img.kh.syom.cn/tuku2025/
End
温馨提示:如果您对本文有疑问,请在本页留言即可!!!
觉得很赞 (0)付款方式
X
付款方式:
  • 微信
  • 支付宝
  • QQ红包

使用微信扫一扫
blogger
    发布日期:2025-04-18   所属类别:代码教程   浏览:43次
    本文地址:http://www.syom.cn/chengxu/1146.html [ 百度已收录 ]
    声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!

留言/评论:◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

填写好QQ号码,任点空白处自动获取

昵称

邮箱

网址

个人资料

舍力

博主:舍力

Emlog交流群

    用心做好每一件事!

博客统计

  • 文章数量:1136篇
  • 文章评论:3524条
  • 总访问量:10612633次
  • 微语数量:81条
  • 在线人数:1人
  • 本站运行:11年8月7天
  • 博主连续3天都没有更新文章了!
Q2 虚位以待
Copyright © 2025 舍力博客 版权所有   粤ICP备11021420号
基于宝塔面板,数据存储于阿里云ECS
Powered by emlog / &Author 舍力博客.