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;
}
?>
