ホームページ  >  記事  >  バックエンド開発  >  PHP でディレクトリとその内容全体 (ファイル + サブディレクトリ) を再帰的に削除する方法

PHP でディレクトリとその内容全体 (ファイル + サブディレクトリ) を再帰的に削除する方法

WBOY
WBOYオリジナル
2024-08-28 11:08:03596ブラウズ

How to Recursively Delete a Directory and its Entire Contents (files + sub dirs) in PHP

PHP: PHP (ハイパーテキスト プリプロセッサ) は、Web 開発用に特別に設計された、広く使用されているオープンソースのサーバー側スクリプト言語です。元々は 1994 年に Rasmus Lerdorf によって作成され、それ以来、世界中の何百万もの開発者によって使用される強力な言語に進化しました。

PHP は主に動的な Web ページと Web アプリケーションを開発するために使用されます。これにより、開発者は HTML 内に PHP コードを埋め込むことができ、サーバー側のロジックとプレゼンテーション層を簡単に混合できるようになります。 PHP スクリプトはサーバー上で実行され、結果の HTML がクライアントのブラウザーに送信されます。

PHP でディレクトリとその内容全体 (ファイルとサブディレクトリ) を再帰的に削除する方法は複数あります。一般的な 3 つの方法を次に示します。

  • rmdir() 関数と unlink() 関数を再帰的に使用する

  • glob()関数の使用

  • RecursiveDirectoryIterator クラスと RecursiveIteratorIterator クラスの使用

rmdir() 関数と unlink() 関数を再帰的に使用する

rmdir() 関数と unlink() 関数を使用して、PHP でディレクトリとその内容全体 (ファイルとサブディレクトリ) を再帰的に削除するには、

リーリー

コードの説明はこちら

deleteDirectory() 関数が定義されており、ディレクトリ パスをパラメータとして受け取ります。

is_dir($dirPath) を使用して、指定されたパスがディレクトリであるかどうかを確認します。ディレクトリではない場合、関数は戻ります。

それがディレクトリの場合、scandir($dirPath) を使用して、指定されたディレクトリ内のファイルとディレクトリのリストを取得します。

特別なエントリ「.」を除き、各ファイルとディレクトリを反復処理します。そして ".."。

各エントリについて、ディレクトリ パスとファイル名を連結して完全なファイル パスを構築します。

エントリがサブディレクトリの場合、そのサブディレクトリに対して deleteDirectory() 関数が再帰的に呼び出されます。

エントリがファイルの場合、unlink($filePath)を使用してファイルを削除します。

すべてのファイルとサブディレクトリを処理した後、rmdir($dirPath) が呼び出され、空のディレクトリ自体が削除されます。

この関数を使用するには、削除したいディレクトリのパスを指定してこの関数を呼び出すだけです。

リーリー

指定されたパス内のファイルとディレクトリを削除するための適切な権限があることを確認してください。

glob()関数の使用

glob() 関数を使用して PHP でディレクトリとその内容全体 (ファイルとサブディレクトリ) を再帰的に削除するには、

リーリー

コードの説明はこちら

deleteDirectory() 関数が定義されており、ディレクトリ パスをパラメータとして受け取ります。

パターン $dirPath で glob() 関数を使用します。 '/*' は、指定したディレクトリ内のファイルとディレクトリのリストを取得します。

glob() から取得した各エントリを反復処理します。

各エントリについて、is_dir($file)を使用してディレクトリであるかどうかを確認します。

それがディレクトリの場合、そのサブディレクトリに対して deleteDirectory() 関数が再帰的に呼び出され、その内容が削除されます。

ファイルの場合は、unlink($file)を使用してファイルを削除します。

すべてのファイルとサブディレクトリを処理した後、rmdir($dirPath) が呼び出され、空のディレクトリ自体が削除されます。

この関数を使用するには、削除するディレクトリのパスを指定してこの関数を呼び出すだけです。

リーリー

指定されたパス内のファイルとディレクトリを削除するための適切な権限があることを確認してください。

RecursiveDirectoryIterator クラスと RecursiveIteratorIterator クラスの使用

RecursiveDirectoryIterator クラスと RecursiveIteratorIterator クラスを使用して PHP でディレクトリとその内容全体 (ファイルとサブディレクトリ) を再帰的に削除するには、

リーリー

コードの説明はこちら

deleteDirectory() 関数が定義されており、ディレクトリ パスをパラメータとして受け取ります。

指定されたディレクトリ パスを使用して RecursiveDirectoryIterator オブジェクトを作成します。 RecursiveDirectoryIterator::SKIP_DOTS フラグは、特殊なエントリ「.」を除外するために使用されます。反復からの「..」。

ファイルとディレクトリを再帰的に反復処理するための RecursiveIteratorIterator オブジェクトを作成します。 RecursiveIteratorIterator::CHILD_FIRST フラグは、子要素が親要素より前に処理されるようにするために使用されます。

$イテレーターの foreach ループを使用して、各ファイルとディレクトリを反復処理します。

各エントリについて、

$file->isDir() を使用してディレクトリであるかどうかを確認します。

ディレクトリの場合は、rmdir(

$file->getPathname())を使用してディレクトリを削除します。

If it's a file, unlink($file->getPathname()) is used to delete the file.

After processing all files and subdirectories, rmdir($dirPath) is called to remove the empty directory itself.

To use this function, simply call it with the path of the directory you want to delete:

<?php
   $directoryPath = '/path/to/directory';
   deleteDirectory($directoryPath);
?>

Make sure you have proper permissions to delete the files and directories within the specified path.

Conclusion

These methods provide different approaches to achieve the same result. You can choose the method that suits your specific requirements and coding preferences. Remember to handle permissions properly to ensure that you have the necessary privileges to delete files and directories.

以上がPHP でディレクトリとその内容全体 (ファイル + サブディレクトリ) を再帰的に削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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