ホームページ バックエンド開発 PHPの問題 PHPを使用してフォルダーの下のサブフォルダーを削除する方法

PHPを使用してフォルダーの下のサブフォルダーを削除する方法

Mar 24, 2023 pm 02:54 PM
php phpファイルのディレクトリ

PHP 開発者の場合、フォルダーの下にあるフォルダーを削除する必要が生じる場合があります。 PHP にはファイルやフォルダーを削除するための組み込み関数が提供されていますが、フォルダーを個別に削除するための機能は提供されていません。今回はPHPを使ってフォルダー配下のサブフォルダーを削除する方法を紹介します。

フォルダーの下のサブフォルダーを削除することは、特に古くて役に立たないファイルをクリーンアップする必要がある場合に、比較的一般的な操作です。 PHP では、rmdir() 関数を使用してフォルダーを削除できます。この関数は、フォルダーへのパスをパラメーターとして受け取り、そのフォルダーの削除を試みます。ただし、削除できるのは空のフォルダーのみで、空でないフォルダーは削除できません。

PHP で空ではないフォルダーを削除する操作は比較的複雑です。フォルダーを正常に削除するには、まずフォルダー内のすべてのファイルとサブフォルダーを削除し、エラーが発生しないことを確認する必要があるためです。幸いなことに、PHP には recursiveDirectoryDe​​lete() という関数が用意されており、フォルダー内のすべてのファイルとサブフォルダーを簡単に削除できます。その実装プロセスは次のとおりです:

function recursiveDirectoryDelete($directory){
    if(!is_dir($directory)){
        throw new InvalidArgumentException(sprintf('%s is not a directory', $directory));
    }

    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::CHILD_FIRST
    );

    foreach($files as $file) {
        if ($file->isDir()){
            rmdir($file->getRealPath());
        } else {
            unlink($file->getRealPath());
        }
    }

    rmdir($directory);
    return true;
}
ログイン後にコピー

上記のコードでは、まず、渡されたパラメータがディレクトリであるかどうかを確認します。ディレクトリではない場合、InvalidArgument 例外がスローされます。

次に、RecursiveDirectoryIterator クラスと RecursiveIteratorIterator クラスを使用して、ディレクトリ内のすべてのサブディレクトリとファイルを反復処理します。ここでは、無限ループを避けるために . および .. ディレクトリをスキップする SKIP_DOTS 定数も渡します。

次に、現在のファイルまたはディレクトリのタイプを確認し、rmdir() または unlink() 関数を使用してそれ自体を削除します。最後に、rmdir() 関数を使用してフォルダーを削除します。

上記のコードでは、recursiveDirectoryDe​​lete() 関数を呼び出して、フォルダーの下にあるすべてのファイルとサブフォルダーを削除できます。

しかし、フォルダーの下のサブフォルダーを削除する方法というニーズをまだ実現していません。

PHP では、フォルダーの下のサブフォルダーを削除する必要がある場合、まず recursiveDirectoryDe​​lete() 関数を呼び出してサブフォルダーを削除し、次にその親フォルダーを削除します。

function deleteSubdirectory($parentDirectory, $subDirectory)
{
    $subDirectoryPath = sprintf('%s/%s', $parentDirectory, $subDirectory);
    if (is_dir($subDirectoryPath)) {
        recursiveDirectoryDelete($subDirectoryPath);
        return true;
    }
    throw new InvalidArgumentException(sprintf('%s is not a directory under %s', $subDirectory, $parentDirectory)); 
}
ログイン後にコピー

上記のコードでは、最初にサブフォルダーのフル パスを構築し、それがディレクトリであるかどうかを確認します。存在する場合は、recursiveDirectoryDe​​lete() 関数を呼び出して削除します。それ以外の場合は、例外がスローされます。

これで、フォルダーの下のサブフォルダーを削除する方法が完了しました。上記 2 つの関数を組み合わせると、この関数を PHP で簡単に実装できます。完全な例を次に示します。

function recursiveDirectoryDelete($directory){
    if(!is_dir($directory)){
        throw new InvalidArgumentException(sprintf('%s is not a directory', $directory));
    }

    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::CHILD_FIRST
    );

    foreach($files as $file) {
        if ($file->isDir()){
            rmdir($file->getRealPath());
        } else {
            unlink($file->getRealPath());
        }
    }

    rmdir($directory);
    return true;
}

function deleteSubdirectory($parentDirectory, $subDirectory)
{
    $subDirectoryPath = sprintf('%s/%s', $parentDirectory, $subDirectory);
    if (is_dir($subDirectoryPath)) {
        recursiveDirectoryDelete($subDirectoryPath);
        return true;
    }
    throw new InvalidArgumentException(sprintf('%s is not a directory under %s', $subDirectory, $parentDirectory)); 
}

$parentDirectory = '/path/to/directory';
$subDirectory = 'subdirectory';

deleteSubdirectory($parentDirectory, $subDirectory);
ログイン後にコピー

上の例では、最初に 2 つの関数 recursiveDirectoryDe​​lete()deleteSubdirectory() を定義してから を呼び出します。 deleteSubdirectory() 指定されたサブフォルダーを削除する関数。 $parentDirectory$subDirectory を独自のパスとサブフォルダー名に置き換えるだけです。

概要:

フォルダーの下のサブフォルダーの削除は、PHP では比較的一般的な操作です。 recursiveDirectoryDe​​lete() 関数を呼び出すことですべてのファイルとサブフォルダーを削除でき、指定したサブフォルダーを削除するには deleteSubdirectory() 関数を使用します。この記事があなたのお役に立てば幸いです。

以上がPHPを使用してフォルダーの下のサブフォルダーを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles