2011年01月17日

PHPで空のディレクトリを下層まで再帰的に消す

日別にディレクトリを掘ってログファイルをしまっておいたりすると、ログを消した時にディレクトリが空になるので、あるディレクトリから下にある空のディレクトリを全部消したい時がけっこうある。平たく言えば find . -type d -empty -exec rm -rf {} \; をPHPでやりたい。PHPの関数に用意されていれば便利だと思うのだが、まだないので自作することになる。
function remove_empty_dir_recursive($dir)
{
if( !is_dir($dir) ) return false;
if( !($dh = opendir($dir)) ) return false;
while( ($file = readdir($dh)) !== false) {
if( strpos($file,".") === 0 ) continue;
if( is_dir($dir."/".$file) &&
remove_empty_dir_recursive($dir."/".$file) ) continue;
closedir($dh);
return false;
}
closedir($dh);
rmdir($dir);
return true;
}

remove_empty_dir_recursive( 消したいトップディレクトリ ); で、その配下で空のディレクトリをrmdirする。いっちょあり。

ついでに、ファイルがあっても全部消しちゃうときはこう。
function remove_everything_dir_recursive($dir)
{
if( !is_dir($dir) ) return false;
if( !($dh = opendir($dir)) ) return false;
while( ($file = readdir($dh)) !== false) {
if( strpos($file,".") === 0 ) continue;
if( is_dir($dir."/".$file) ){
remove_everything_dir_recursive($dir."/".$file);
continue;
}
unlink($dir."/".$file);
}
closedir($dh);
rmdir($dir);
return;
}
いっちょあり。
posted by usoinfo at 14:28 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。