PHP中用于删除目录及其内容的函数
发布时间:2023-06-30 19:22:21
在PHP中,可以使用函数rmdir删除目录,但是仅当目录为空时才能成功删除。如果要删除一个非空的目录,可以使用递归的方式来删除目录及其内容。
以下是一个用于删除目录及其内容的函数:
function deleteDirectory($dir) {
if (!is_dir($dir)) {
throw new InvalidArgumentException("$dir must be a directory");
}
if (substr($dir, strlen($dir) - 1, 1) != '/') {
$dir .= '/';
}
$files = glob($dir . '*', GLOB_MARK);
foreach ($files as $file) {
if (is_dir($file)) {
deleteDirectory($file);
} else {
unlink($file);
}
}
rmdir($dir);
}
使用该函数可以删除指定目录及其内容。例如:
deleteDirectory('/path/to/directory');
此函数首先检查目录是否存在并且是一个目录,如果不是,则抛出异常。然后,将目录路径拼接末尾的斜杠以确保路径正确。
接下来,通过glob函数获取目录中的所有文件和子目录。GLOB_MARK标志用于将目录标记为目录而不是文件。循环遍历文件和子目录并检查是否是目录。如果是目录,则递归调用deleteDirectory函数以删除子目录及其内容。如果是文件,则使用unlink函数将其删除。
最后,使用rmdir函数删除空的目录。
需要注意的是,删除目录及其内容是一个具有潜在风险的操作。请确保在使用该函数之前进行适当的验证和安全性检查,并小心操作以避免不可恢复的数据丢失。
