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