ホームページ >バックエンド開発 >PHPチュートリアル >PHPでファイルを含むディレクトリを削除するには?

PHPでファイルを含むディレクトリを削除するには?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-05 19:09:12285ブラウズ

How to Delete a Directory Containing Files in PHP?

ファイルを含むディレクトリの削除

ディレクトリを削除するのは簡単ですが、ディレクトリにファイルが含まれている場合はどうなりますか?ディレクトリ内にファイルがある場合、rmdir() 関数は失敗します。ディレクトリを削除するには、まずディレクトリに含まれるすべてのファイルを削除する必要があります。

これを行うにはいくつかの方法があります。 1 つのオプションは、ネストされたディレクトリを含むディレクトリ内のすべてのファイルとフォルダーを削除する再帰関数を使用することです。以下に例を示します:

function deleteDir(string $dirPath): void {
    if (! is_dir($dirPath)) {
        throw new InvalidArgumentException("$dirPath must be a directory");
    }
    if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') {
        $dirPath .= '/';
    }
    $files = glob($dirPath . '*', GLOB_MARK);
    foreach ($files as $file) {
        if (is_dir($file)) {
            deleteDir($file);
        } else {
            unlink($file);
        }
    }
    rmdir($dirPath);
}

また、PHP 5.2 以降を使用している場合は、再帰を自分で実装せずに RecursiveIterator を使用してディレクトリを削除できます:

function removeDir(string $dir): void {
    $it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
    $files = new RecursiveIteratorIterator($it,
                 RecursiveIteratorIterator::CHILD_FIRST);
    foreach($files as $file) {
        if ($file->isDir()){
            rmdir($file->getPathname());
        } else {
            unlink($file->getPathname());
        }
    }
    rmdir($dir);
}

以上がPHPでファイルを含むディレクトリを削除するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。