PHP读取目录列表并生成表格的完整代码实现
本文将演示如何使用 PHP 原生文件操作函数 `opendir` 和 `readdir` 遍历当前目录,并结合 `filesize` 和 `filemtime` 获取文件属性,最终以 HTML 表格形式展示文件名、大小、类型和修改日期。
功能目标
我们需要编写一段 PHP 代码,实现在访问网页时自动列出当前目录下的所有文件和子目录,并显示以下详细信息:
- 文件名:文件的名称。
- 文件大小:以字节为单位显示。
- 文件类型区分普通文件还是子目录。
- 修改日期:文件最后修改的时间戳。
准备条件
- 一个支持 PHP 的 Web 服务器(如 Apache, Nginx)。
- 当前目录下存在若干文件或文件夹供测试。
- 确保 PHP 环境具备读取当前目录的权限。
实现步骤
第1步:定位当前目录路径
使用 dirname(__FILE__) 获取包含当前脚本的文件所在的绝对路径。这能确保无论脚本在哪里被调用,都能正确读取同级目录的内容。
第2步:打开目录句柄
调用 opendir($dir) 打开目录流。如果打开失败会返回 false,实际应用中建议加入错误处理判断,此处为简化示例直接进行下一步。
第3步:初始化表格结构
开始输出 HTML 表格标签,设置边框样式以便观察,并创建表头行 <th> 分别对应“文件名”、“大小”、“类型”和“修改日期”。
第4步:循环读取并筛选条目
使用 while ($file = readdir($open_dir)) 循环读取目录条目。在循环内部,必须使用条件判断 if ($file != "." && $file != "..") 排除当前目录引用 (.) 和上级目录引用 (..),否则会导致列表混乱或无限循环风险。
第5步:获取并输出文件属性
对每一个有效的文件名,依次执行以下操作:
filesize($file):获取文件大小。filetype($file):获取文件类型(file 表示普通文件,dir 表示目录)。filemtime($file):获取文件最后修改的时间戳。
将这些数据拼接进 <tr> 和 <td> 标签中输出。
第6步:关闭资源并结束表格
循环结束后,输出 </table> 结束 HTML 表格。虽然在现代 PHP 脚本结束时会自动关闭句柄,但良好的习惯是在合适位置考虑释放资源(此简例未显式包含 close,因脚本即将退出)。
完整代码实现
将以下代码保存为 index.php 或类似文件并在服务器环境下运行即可看到效果。
<?php
// 获取当前脚本所在目录的绝对路径
$dir = dirname(__FILE__);
// 打开目录
$open_dir = opendir($dir);
// 开始输出表格
echo "<table border=1 borderColor=red cellpadding=6>";
echo "<tr><th>文件名</th><th>大小</th><th>类型</th><th>修改日期</th></tr>";
// 循环读取目录内容
while ($file = readdir($open_dir)) {
// 过滤掉当前目录(.)和上一级目录(..)
if ($file != "." && $file != "..") {
echo "<tr>";
echo "<td>" . htmlspecialchars($file) . "</td>"; // 建议使用htmlspecialchars防止XSS
echo "<td>" . filesize($file) . "</td>";
echo "<td>" . filetype($file) . "</td>";
echo "<td>" . date("Y-m-d H:i:s", filemtime($file)) . "</td></tr>";
}
}
// 关闭表格
echo "</table>";
?>
注:上述代码为原始简化版逻辑。在实际生产环境中,建议对文件名使用 htmlspecialchars 转义以防止跨站脚本攻击,并将时间戳转换为可读格式(如代码注释所示)。同时,filesize 和 filemtime 在未找到文件或无权限时会发出警告,健壮的实现应包含额外的判空检查。
简要总结
以上展示了如何使用 PHP 简单的几行核心代码配合 HTML 标签来实现目录内容的动态浏览。关键在于理解 opendir/readdir 的配合使用以及对特殊目录符号的过滤。以上就是 PHP 简单浏览目录内容的实现代码的详细内容,更多关于 PHP 文件操作的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









