接下来我将详细讲解如何使用PHP遍历文件夹和文件列表,并且提供两个示例说明。具体步骤如下:
1. 打开目录
首先,我们需要打开需要遍历的目录。可以使用opendir()
函数实现,如下所示:
$dir = 'path/to/folder'; // 需要遍历的目录
$handle = opendir($dir); // 打开目录
2. 遍历目录
接下来我们需要遍历该目录,并将其中的文件和子目录取到。可以使用readdir()
函数进行实现,如下所示:
while (false !== ($entry = readdir($handle))) {
// 处理每个条目
}
上述代码将遍历每个目录项(子目录和文件),一次处理一个条目。注意,readdir()
函数会将当前和上一个目录作为特殊条目处理,所以你需要将这些忽略。这里可以使用in_array()
函数过滤掉即可。
3. 处理文件夹
对于遇到的每个文件夹,我们需要打开并遍历所有的子目录和文件。可以使用递归的方法,实现如下:
function listFolderFiles($dir){
$ffs = scandir($dir);
unset($ffs[array_search('.', $ffs, true)]);
unset($ffs[array_search('..', $ffs, true)]);
//如果没有文件和目录
if (count($ffs) < 1){
return;
}
foreach($ffs as $ff){
echo "<li>".$ff;
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
echo "</li>";
}
}
上面的函数遍历了给定目录的所有文件和子目录,并输出一个HTML列表显示,不断递归调用自身以遍历所有的文件夹和文件。可以通过修改输出格式,如改为输出数组来使其返回文件列表
示例一:获取指定文件夹下所有文件
$list = array(); // 初始化文件列表
$dir = 'path/to/folder'; // 需要遍历的目录
$handle = opendir($dir); // 打开目录
// 遍历目录取到文件列表
while (false !== ($entry = readdir($handle))) {
// 忽略.和..目录
if ($entry == '.' || $entry == '..') {
continue;
}
// 判断是否为文件
if (is_file($dir . '/' . $entry)) {
// 将文件名添加到列表中
$list[] = $entry;
}
}
// 关闭目录
closedir($handle);
print_r($list); // 输出文件列表
上述代码将遍历指定目录下的所有文件,并将文件名存储到数组中。
示例二:获取指定文件夹下所有子目录和文件
function listFolderFiles($dir){
$ffs = scandir($dir);
unset($ffs[array_search('.', $ffs, true)]);
unset($ffs[array_search('..', $ffs, true)]);
//如果没有文件和目录
if (count($ffs) < 1){
return;
}
foreach($ffs as $ff){
echo "<li>".$ff;
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
echo "</li>";
}
}
$dir = 'path/to/folder'; // 需要遍历的目录
echo "<ul>";
listFolderFiles($dir);
echo "</ul>";
上述代码将遍历指定目录下的所有子目录和文件,并输出为一个递归的HTML列表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php遍历文件夹和文件列表示例分享 - Python技术站