目录遍历在PHP中是一个常见的操作,它可以帮助你获取目录中的所有文件和子目录的信息。以下是一个简单的PHP脚本示例,它演示了如何遍历一个目录以及其所有子目录,并打印出每个文件和目录的路径。
<?php
function listDirectoryContents($dir) {
// 打开目录句柄
if ($handle = opendir($dir)) {
echo "目录:{$dir}\n";
echo "------------------------------------\n";
// 循环读取目录内容
while (false !== ($entry = readdir($handle))) {
// 跳过点号和点号目录
if ($entry != "." && $entry != "..") {
// 拼接完整的文件/目录路径
$fullPath = $dir . DIRECTORY_SEPARATOR . $entry;
// 判断是文件还是目录
if (is_dir($fullPath)) {
echo "目录: {$fullPath}\n";
// 递归调用函数遍历子目录
listDirectoryContents($fullPath);
} else {
echo "文件: {$fullPath}\n";
}
}
}
// 关闭目录句柄
closedir($handle);
} else {
echo "无法打开目录:{$dir}\n";
}
}
// 调用函数,传入要遍历的目录路径
listDirectoryContents('path/to/your/directory');
?>
代码说明
函数定义:
listDirectoryContents函数接收一个参数$dir,即你要遍历的目录路径。打开目录:使用
opendir函数打开指定的目录。如果目录打开失败,将输出错误信息。循环遍历:使用
while循环和readdir函数遍历目录中的所有条目。readdir会返回目录中的下一个条目,直到所有条目被读取。跳过点号和点号目录:在遍历过程中,跳过点号(
.)和点号目录(..),这两个特殊条目分别代表当前目录和父目录。拼接路径:使用
DIRECTORY_SEPARATOR宏来获取操作系统特定的目录分隔符,并拼接完整的文件/目录路径。判断文件或目录:使用
is_dir函数检查当前条目是文件还是目录。递归遍历子目录:如果当前条目是目录,递归调用
listDirectoryContents函数以遍历该子目录。关闭目录句柄:使用
closedir函数关闭目录句柄。
使用方法
将上述代码保存为 .php 文件,并在支持PHP的服务器上运行。确保将 'path/to/your/directory' 替换为你想要遍历的实际目录路径。
运行脚本后,它将遍历指定目录及其所有子目录,并打印出每个文件和目录的路径。
