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

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

Linda Hamilton
リリース: 2024-12-05 19:09:12
オリジナル
257 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート