PHP实现递归删除目录的通用方法

1. 介绍

在 web 开发中,有时需要清空某个目录下的所有文件,这就需要用到递归删除目录的通用方法。本文将介绍 PHP 实现递归删除目录的通用方法。

2. 函数实现

PHP 提供了一个函数 rmdir 用来删除目录。但是如果该目录下还有文件或目录,就会删除失败;如果目录下有文件或目录的话,我们需要在删除前先递归删除这些文件或目录。下面是一个递归删除目录的通用方法。

function delDir($path) {

if (is_dir($path)) {

$dir = opendir($path);

while (($file = readdir($dir)) !== false) {

if($file == '.' || $file == '..') {

continue;

}

$filePath = $path . DIRECTORY_SEPARATOR . $file;

if (is_dir($filePath)) {

delDir($filePath);

} else {

unlink($filePath); // 删除文件

}

}

closedir($dir);

rmdir($path); // 删除目录

}

}

3. 函数说明

3.1 参数说明

$path:要删除的目录的路径。

3.2 函数过程

首先判断参数 $path 所指向的目录是否存在,如果存在就打开目录并读取目录下的文件和目录。

遍历目录下的文件和目录,并判断当前 $file 是否为 "." 或 "..",如果是则跳出本次循环。

如果当前 $file 是目录,则递归调用该函数进行删除;否则就调用 PHP 内置的 unlink 函数删除文件。

遍历完目录下的所有文件和目录后,关闭该目录并删除该目录。

4. 使用示例

下面是一个使用该函数删除目录的代码示例。

// 要删除的目录路径

$dirPath = '/home/user/example_dir';

// 调用函数

delDir($dirPath);

以上代码将会递归删除 /home/user/example_dir 目录及其下所有文件和目录。

5. 总结

递归删除目录是一项常见的操作,掌握该技能可以更好的应对日常的 web 开发需求。通过本文,我们了解了 PHP 实现递归删除目录的通用方法,希望对你有所帮助。

后端开发标签