ホームページ > バックエンド開発 > PHPチュートリアル > ディレクトリとファイルを再帰的に削除するための PHP カスタム関数 rrmdir

ディレクトリとファイルを再帰的に削除するための PHP カスタム関数 rrmdir

WBOY
リリース: 2016-07-25 09:08:10
オリジナル
765 人が閲覧しました
  1. /**
  2. ディレクトリとその下のすべてのファイルを再帰的に削除します
  3. func: rrmdir
  4. */
  5. function rrmdir($dir) {
  6. if (is_dir($dir)) {
  7. $objects = scandir($dir);
  8. foreach ($ $object としてのオブジェクト) {
  9. if ($object != “.” && $object != “..”) {
  10. if (filetype($dir.”/”.$object) == “dir”) rrmdir( $dir.”/”.$object); else unlink($dir.”/”.$object);
  11. }
  12. }
  13. reset($objects);
  14. }
  15. }
  16. ?>
コードをコピーします

添付ファイル: rmdir (PHP4、PHP5) rmdir — ディレクトリを削除する バグを報告する bool rmdir (文字列 $dirname ) dirname で指定されたディレクトリの削除を試みます。 ディレクトリは空である必要があり、適切な権限が必要です。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。 注: PHP 5.0.0 以降、rmdir() は特定の URL ラッピング プロトコルでも使用できます。 rmdir() がどの URL ラッピング プロトコルをサポートしているかを確認するには、サポートされているプロトコルとラッパーのリストを参照してください。 注: Context のサポートは PHP 5.0.0 で追加されました。コンテキストの説明については、「Stream 関数」を参照してください。 注: セーフ モードが有効になっている場合、PHP はスクリプトの実行時に、スクリプト化されているディレクトリの UID (所有者) が実行中のスクリプトと同じかどうかを確認します。 mkdir() と unlink() を参照してください。

  1. function rrmdir($dir) {
  2. if (is_dir($dir)) {
  3. $objects = scandir($dir);
  4. foreach ($objects as $object) {
  5. if ($object != "." && $object != "..") {
  6. if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$ object); else unlink($dir."/".$object);
  7. }
  8. }
  9. reset($objects);
  10. rmdir($dir);
  11. }
  12. }
  13. ?>
コードをコピー

これは私のコードではありませんが、見つけるのに時間がかかったので共有しようと思いました。これは、フォルダー、すべてのサブフォルダー、およびファイルを一度に削除する機能です。 この関数が実行されるページに関連して、削除したいディレクトリを指定します。次に、フォルダーを空にするだけで、削除しない場合は $empty = true を設定し、$empty = false を設定する場合はそのままにしておきます。削除すると、指定されたディレクトリも削除されます。

  1. function deleteAll($directory, $empty = false) {
  2. if(substr($directory,-1) == "/") {
  3. $directory = substr($directory, 0,-1);
  4. }
  5. if(!file_exists($directory) || !is_dir($directory)) {
  6. return false;
  7. } elseif(!is_readable($directory)) {
  8. return false;
  9. } else {
  10. $directoryHandle = opendir($directory);
  11. while ($contents = readdir($directoryHandle)) {
  12. if($contents != '.' && $contents != '..') {
  13. $path = $ディレクトリ . "/" . $contents;
  14. if(is_dir($path)) {
  15. deleteAll($path);
  16. } else {
  17. unlink($path);
  18. }
  19. }
  20. }
  21. closedir($directoryHandle);
  22. if($empty == false) {
  23. if(!rmdir($directory)) {
  24. return false;
  25. }
  26. }
  27. return true;
  28. }
  29. }
  30. ?>
コードをコピー

削除権限が設定されていることを確認するために、前のスクリプトにパッチを適用します。

  1. //フォルダーの削除関数
  2. function deleteDirectory($dir) {
  3. if (!file_exists($dir)) return true;
  4. if (!is_dir($dir) || is_link( $dir)) return unlink($dir);
  5. foreach (scandir($dir) as $item) {
  6. if ($item == '.' || $item == '..') continue;
  7. if ( !deleteDirectory($dir . "/" . $item)) {
  8. chmod($dir . "/" . $item, 0777);
  9. if (!deleteDirectory($dir . "/" . $item)) return false ;
  10. };
  11. }
  12. return rmdir($dir);
  13. }
  14. ?>
コードをコピー

詳細については、http://cn.php.net/rmdir を参照してください。

>>>>



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