PHP ディレクトリ内のファイル、サブディレクトリを一括消去

PHP

PHP ディレクトリ内のファイル、サブディレクトリを一度に消去する

あるディレクトリの中に、ファイルが複数、その中にディレクトリがあったとします。
それを、一番上のディレクトリを指定して中身を消去する方法です。

unlinkはファイルの消去、rmdirはディレクトリが空でないとできないので、上記のようなことはPHPでは一発でできません。
(シェルを使って消したほうが簡単かも)
下記のスクリプトは、下記のPHP本家サイトから借用しました。
http://www.php.net/manual/ja/function.unlink.php

Jon Hassallさん、ありがとう!!

 <?php
 /**
  * Recursively delete a directory
  *
  * @param string $dir Directory name
  * @param boolean $deleteRootToo Delete specified top-level directory as well
  * $dirは消去したい一番上のディレクトリ
  *  $deleteRootTooは一番上のディレクトリを消去したい場合にtrueを設定
  */
 function unlinkRecursive($dir, $deleteRootToo)
 {
     if(!$dh = @opendir($dir))
     {
         return;
     }
     while (false !== ($obj = readdir($dh)))
     {
         if($obj == '.' || $obj == '..')
         {
             continue;
          }  
 
         if (!@unlink($dir . '/' . $obj))
         {
            unlinkRecursive($dir.'/'.$obj, true);
        }
    }
 
    closedir($dh);
   
    if ($deleteRootToo)
    {
        @rmdir($dir);
    }
   
    return;
 }
 ?>
カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です