请选择 进入手机版 | 继续访问电脑版
绿茶科技社区
PHP本身有一个rmdir()函数可以用来删除目录,不过要求必须是空目录,本文列举了三种方法。1、递规法;2、系统调用法;3、循环法 。
1、递规法:利用递归一层一层的删。

  1. deleteDir($dir)   
  2. {   
  3. if (rmdir($dir)==false && is_dir($dir)) {   
  4. if ($dp = opendir($dir)) {   
  5.   while (($file=readdir($dp)) != false) {   
  6.    if (is_dir($file) && $file!='.' && $file!='..') {   
  7.     deleteDir($file);   
  8.    } else {   
  9.     unlink($file);   
  10.    }   
  11.   }   
  12.   closedir($dp);   
  13. } else {   
  14.   exit('Not permission');   
  15. }   
  16. }   
  17. }  
复制代码

2、系统调用法

  1. function del_dir($dir)   
  2. {   
  3. if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {   
  4.     $str = "rmdir /s/q " . $dir;   
  5. } else {   
  6.     $str = "rm -Rf " . $dir;   
  7. }   
  8. }  
复制代码

3、循环法

  1. function deltree($pathdir)   
  2. {   
  3. echo $pathdir;//调试时用的   
  4. if(is_empty_dir($pathdir))//如果是空的   
  5.    {   
  6.    rmdir($pathdir);//直接删除   
  7.    }   
  8.    else   
  9.    {//否则读这个目录,除了.和..外   
  10.        $d=dir($pathdir);   
  11.        while($a=$d->read())   
  12.        {   
  13.        if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);}   
  14.        //如果是文件就直接删除   
  15.        if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..'))   
  16.        {//如果是目录   
  17.            if(!is_empty_dir($pathdir.'/'.$a))//是否为空   
  18.            {//如果不是,调用自身,不过是原来的路径+他下级的目录名   
  19.            deltree($pathdir.'/'.$a);   
  20.            }   
  21.            if(is_empty_dir($pathdir.'/'.$a))   
  22.            {//如果是空就直接删除   
  23.            rmdir($pathdir.'/'.$a);   
  24.            }   
  25.        }   
  26.        }   
  27.        $d->close();   
  28.    echo "必须先删除目录下的所有文件";//我调试时用的   
  29.    }   
  30. }   
  31. function is_empty_dir($pathdir)   
  32. {   
  33. //判断目录是否为空   
  34. $d=opendir($pathdir);   
  35. $i=0;   
  36.    while($a=readdir($d))   
  37.    {   
  38.    $i++;   
  39.    }   
  40. closedir($d);   
  41. if($i>2){return false;}   
  42. else return true;   
  43. }   
复制代码




分享到 :
0 人收藏

3 个回复

倒序浏览
旁观者  高级会员 | 2019-8-19 09:22:53
专业抢沙发的!哈哈
老翅寒暑  高级会员 | 6 天前
占坑编辑ing
Zachary_Fan  高级会员 | 5 天前
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

举报|Archiver|手机版|小黑屋|Lvchakeji Inc.  

Powered by Discuz! X3.3 © 2001-2016 Comsenz Inc.

返回顶部