欢迎访问宙启技术站
智能推送

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函数删除空的目录。

需要注意的是,删除目录及其内容是一个具有潜在风险的操作。请确保在使用该函数之前进行适当的验证和安全性检查,并小心操作以避免不可恢复的数据丢失。