PHP读取目录列表并生成表格的完整代码实现

落日邮差
落日邮差
发布时间:2026-10-14| 5人浏览过
原创

本文将演示如何使用 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 文件操作的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。