PHPの処理にてとあるディレクトリを削除したかったのでメモ
ファイルおよびディレクトリの読込関数は以下の通り
ファイルおよびディレクトリ削除の関数は以下の通り
ディレクトリ削除する方法はrmdirだけで使えたらいいですが、中にファイルがあるとエラーになるようです。
ファイルを削除するにはunlinkを使うのでrmdir+unlinkを併用で使います。
フォルダ内に複数ファイルおよびディレクトリが入っていると一つ一つ削除しないといけない為、再帰処理ができるように
opendir+readdirかglobを使ってディレクトリ内のファイル一覧を取得します。
opendir+readdirの場合
<?php
$dir = "./test";
if ($handle = opendir("$dir")) {
while (false !== ($item = readdir($handle))) {
if ($item != "." && $item != "..") {
if (is_dir("$dir/$item")) {
remove_directory("$dir/$item");
} else {
unlink("$dir/$item");
}
}
}
closedir($handle);
rmdir($dir);
}
globの場合
<?php
$dir = "./test";
rmdir($dir);
function rmdir($dir)
{
foreach (glob($dir . '/*') as $file) {
if (is_dir($file))
rrmdir($file);
else
unlink($file);
}
rmdir($dir);
}
単純削除だけならglobよりもopendir+readdirのほうが早いそうです。
globはパターンマッチができるので*.jpgの削除に向いてるかもです。