0

0

PHP怎么导出文件夹列表_PHP生成文件夹目录清单【教程】

蓮花仙者

蓮花仙者

发布时间:2026-02-16 11:56:58

|

994人浏览过

|

来源于php中文网

原创

php无一键导出文件夹列表函数,需用scandir()、recursivedirectoryiterator或glob()实现;关键在导出为csv/txt/json时处理bom、换行符、字段包裹及路径编码,避免中文乱码与excel解析错误。

php怎么导出文件夹列表_php生成文件夹目录清单【教程】

PHP 本身不提供“一键导出文件夹列表”的内置函数,但用 scandir()RecursiveDirectoryIteratorglob() 就能可靠生成目录清单——关键不在“怎么列”,而在“怎么导出成可用格式”(如 CSV、TXT、JSON)且避免权限、符号链接、编码等坑。

scandir() 递归列出所有子目录和文件(基础但可控)

适合中小目录结构,逻辑清晰,便于加过滤和排序。注意它默认包含 ...,必须手动剔除;Windows 路径分隔符需统一为正斜杠或转义,否则 CSV 导出时可能损坏格式。

  • array_filter() 去掉 ...array_filter(scandir($path), fn($f) => !in_array($f, ['.', '..']))
  • 递归时建议用函数封装,避免深度过大导致栈溢出;超过 10 层嵌套建议改用迭代方式
  • 中文路径在 Windows 下容易乱码:确保脚本文件保存为 UTF-8 无 BOM,且输出前调用 mb_internal_encoding('UTF-8')
  • 示例片段(仅当前层):
    $files = array_filter(scandir('/var/www'), fn($f) => !in_array($f, ['.', '..']));

RecursiveDirectoryIterator 生成带元数据的清单(推荐用于正式导出)

scandir() 更健壮,自动跳过不可读目录、处理符号链接(可选)、支持获取修改时间、大小、类型等字段,是生成带详情清单的首选。

  • 构造时传入 FilesystemIterator::SKIP_DOTS 可省去手动过滤 ./..
  • getRealPath() 获取绝对路径,避免相对路径在导出后无法定位;但注意若目录无读取权限,getRealPath() 返回 false,需判空
  • 遍历时用 isDir()isFile() 区分类型,别依赖扩展名判断
  • 导出 CSV 时,文件名含逗号、换行或双引号必须用双引号包裹并转义:例如 "\"file,name.txt\""

导出为 CSV 文件时必须处理的三个细节

看似简单,但多数 PHP 目录导出脚本在这里翻车:中文乱码、字段截断、Excel 打开显示“安全警告”。根本原因不是 PHP,而是 Excel 对 CSV 的解析规则。

今天学点啥
今天学点啥

秘塔AI推出的AI学习助手

下载

立即学习PHP免费学习笔记(深入)”;

  • 文件开头必须写入 UTF-8 BOM(\xEF\xBB\xBF),否则 Excel 在 Windows 上默认用 ANSI 解析中文
  • 每行末尾必须是 \r\n(Windows 换行),仅 \n 可能导致 Excel 合并多行为单行
  • 所有字段(包括路径)都应强制用双引号包裹,哪怕不含特殊字符;否则 C:\Program Files 这类含空格路径会被 Excel 当作多个字段
  • 不要用 fputcsv() 直接写,它不自动加 BOM,也不保证 \r\n:先 fopen(),写 BOM,再逐行 fwrite($fp, '"' . addslashes($path) . "\"\r\n")

为什么不用 shell_exec('ls -R')exec('dir /s')

看起来最省事,实际埋雷最多:跨平台失效、权限隔离失败、输出格式不可控、无法捕获错误码、易被注入攻击(尤其路径来自用户输入)。

  • Linux 下 ls -R 输出含多余空行和分隔线,解析成本高;Windows dir /s 时间格式随系统语言变化(如“2024/05/20” vs “2024-05-20”)
  • Web 服务器通常禁用 shell 函数,disable_functions 里大概率有 execshell_exec
  • 若路径含空格或特殊字符(如 $HOME/test dir),未加引号直接拼接命令会报错或执行意外路径
  • 真正需要 Shell 的场景(比如超大目录快速扫描),应改用 proc_open() 配合流式读取,而非 exec()

真正难的不是“列出”,而是让导出结果在不同系统、不同软件里稳定可读——BOM、换行符、字段包裹、路径编码,这四点漏掉任一,用户双击打开 CSV 就会看到一堆问号或错位。别信“本地测试没问题”,一定要用目标环境(尤其是客户用的 Windows + Excel)验证输出文件头和换行。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

441

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

544

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

321

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

418

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

591

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

418

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

591

2023.08.10

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

283

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 11.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号