PHP多目录删除

时间:2015-07-08 15:34:08

标签: php rmdir

所以我正在创建一个图片上传网站,我需要同时删除多个目录和文件。我已经设法创建了完成工作的代码但是我不确定这是否是“好代码”,因为我正在重复自己。

有没有更好的方法来写下面的内容?

$dirname = 'uploads/'.$album_id;
$dirnamethumb = 'uploads/thumbs/'.$album_id;

if (is_dir($dirname))
    $dir_handle = opendir($dirname);
if (!$dir_handle)
    return false;
while($file = readdir($dir_handle)) {
    if ($file != "." && $file != "..") {
        if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);
        else
            delete_directory($dirname.'/'.$file);
    }
}

if (is_dir($dirnamethumb))
    $dir_handle = opendir($dirnamethumb);
if (!$dir_handle)
    return false;
while($file = readdir($dir_handle)) {
    if ($file != "." && $file != "..") {
        if (!is_dir($dirnamethumb."/".$file))
            unlink($dirnamethumb."/".$file);
        else
            delete_directory($dirnamethumb.'/'.$file);
    }
}
closedir($dir_handle);
rmdir($dirname);
rmdir($dirnamethumb);
return true;

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

为什么不从similar question

尝试这个递归函数
function rrmdir($dir) { 
  foreach(glob($dir . '/*') as $file) { 
    if(is_dir($file)) 
      rrmdir($file); 
    else 
      unlink($file); 
  } rmdir($dir); 
}

答案 1 :(得分:0)

try this,

$dir = '/path/to/some/dir/'; // notice: trailing slash!
if ($handle = opendir($dir)) {
    while (false !== ($entry = readdir($handle))) {
        if (is_dir($dir . $entry) ) {
            rmdir($dir . $entry);
        }
    }
    closedir($handle);
}
?>