如何使用 PHP 删除包含内容的文件夹

2022-08-30 14:42:07

我需要使用PHP删除包含内容的文件夹。 并删除空文件夹,但无法删除包含内容的文件夹。rmdir()unlink()


答案 1

此功能将允许您删除任何文件夹(只要它是可写的)及其文件和子目录。

function Delete($path)
{
    if (is_dir($path) === true)
    {
        $files = array_diff(scandir($path), array('.', '..'));

        foreach ($files as $file)
        {
            Delete(realpath($path) . '/' . $file);
        }

        return rmdir($path);
    }

    else if (is_file($path) === true)
    {
        return unlink($path);
    }

    return false;
}

或者不使用递归使用:RecursiveDirectoryIterator

function Delete($path)
{
    if (is_dir($path) === true)
    {
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST);

        foreach ($files as $file)
        {
            if (in_array($file->getBasename(), array('.', '..')) !== true)
            {
                if ($file->isDir() === true)
                {
                    rmdir($file->getPathName());
                }

                else if (($file->isFile() === true) || ($file->isLink() === true))
                {
                    unlink($file->getPathname());
                }
            }
        }

        return rmdir($path);
    }

    else if ((is_file($path) === true) || (is_link($path) === true))
    {
        return unlink($path);
    }

    return false;
}

答案 2

您需要循环访问文件夹内容(包括任何子文件夹的内容)并首先将其删除。

这里有一个例子:http://lixlpixel.org/recursive_function/php/recursive_directory_delete/

要小心!!!


推荐