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 实现递归删除目录的通用方法,希望对你有所帮助。