
本文详解如何用 php 安全、高效地列出指定目录下的全部文件(如 `.php` 文件),避免常见类型错误,并提供可直接运行的示例代码与关键注意事项。
在 PHP 中,glob() 函数是获取匹配通配符路径的文件列表最简洁、可靠的方式之一。它直接返回一个字符串数组(例如 ['download/index.php', 'download/register.php']),无需额外解析或转换——这正是问题中报错的根本原因:json_decode() 仅接受 JSON 格式的字符串,而 $search_data 已是原生 PHP 数组,强行调用会导致 TypeError。
✅ 正确做法是直接遍历 glob() 返回的数组:
';
}
}
?>? 关键说明与最佳实践:
- ✅ 无需 json_decode():glob() 返回的是标准 PHP 索引数组,可直接 foreach 遍历;
- ✅ 安全输出:使用 htmlspecialchars() 防止路径中特殊字符(如 浏览器误解析为 HTML,提升安全性;
- ✅ 健壮性处理:添加 false(执行失败)和 empty()(无匹配文件)判断,让脚本更健壮;
- ⚠️ 注意路径有效性:确保 'download/' 目录存在且 PHP 进程有读取权限,否则 glob() 返回 false;
- ? 扩展用法:若需列出所有文件(不限后缀),可改用 scandir() 或 DirectoryIterator,但 glob() 对通配筛选(如 *.txt, *.log)更直观高效。
综上,正确打印目录文件的核心在于理解函数返回值类型——尊重数据原生形态,而非强行套用不匹配的处理逻辑。
立即学习“PHP免费学习笔记(深入)”;











