note 70769 deleted from function.rmdir by bjori

From: Date: Fri, 27 Oct 2006 10:20:35 +0000
Subject: note 70769 deleted from function.rmdir by bjori
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-119168@lists.php.net to get a copy of this message
Note Submitter: Reason: bad code ---- Others' comments provide several versions of a recursive delete; most of them are absolutely horrid. Here's the foolproof version. <? /* rmdir_recurse(root, [ rm_toplevel ]); root - directory whose *entire* contents you wish to delete rm_toplevel - true: delete contents, incl. root directory [default] false: delete contents, excl. root directory Returns boolean true if *entire* op is successfull, false otherwise */ function rmdir_recurse ($root, $rm_toplevel = true, $level = 0) { if (! $level) clearstatcache(); if (! is_dir($root) || ($dh = @opendir($root)) === false ) return false; while ( ($file = @readdir($dh)) !== false ) { if (is_dir("${root}/${file}") && $file != '.' && $file != '..' && ! rmdir_recurse("${root}/${file}", true, $level + 1) ) return false; else if (is_file("${root}/${file}") && ! unlink("${root}/${file}")) return false; } @closedir($root); if ( ($level || (! $level && $rm_toplevel)) && ! @rmdir($root) ) return false; return true; } ?>

« previous php.notes (#119168) next »