免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1833 | 回复: 1
打印 上一主题 下一主题

PHP中删除目录的三种方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-27 13:43 |只看该作者 |倒序浏览
PHP本身有一个rmdir函数可以用来删除目录,不过要求必须是空目录,本文列举了三种方法。
1、递规法;
2、系统调用法;
3、循环法。

1、递规法:利用递归一层一层的删。
  1. function deleteDir($dir) {
  2.     if (rmdir($dir)==false && is_dir($dir)) {
  3.         if ($dp = opendir($dir)) {
  4.           while (($file=readdir($dp)) != false) {
  5.                 if (is_dir($file) && $file!='.' && $file!='..') {
  6.                  deleteDir($file);
  7.                } else {
  8.                  unlink($file);
  9.                }
  10.          }
  11.          closedir($dp);
  12.       } else {
  13.         exit('Not permission');
  14.       }
  15.   }
  16. }
复制代码
2、系统调用法
  1. function del_dir($dir) {
  2.     if (strtoupper(substr(PHP_OS, 0, 3)) == ‘WIN’) {
  3.         $str = \"rmdir /s/q \" . $dir;
  4.     } else {
  5.       $str = \"rm -Rf \" . $dir;
  6.     }
  7. }
复制代码
3、循环法
  1. function deltree($pathdir) {
  2.     if (is_empty_dir($pathdir))          //如果是空的
  3.     {
  4.          rmdir($pathdir);             //直接删除
  5.     }
  6.    else {             //否则读这个目录,除了.和..外
  7.         $d=dir($pathdir);
  8.         while($a=$d->read()) {
  9.              if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) {
  10.               unlink($pathdir.'/'.$a);

  11.              }
  12.              //如果是文件就直接删除
  13.              if (is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) {      //如果是目录
  14.               if (!is_empty_dir($pathdir.'/'.$a))            //是否为空
  15.               {  //如果不是,调用自身,不过是原来的路径+他下级的目录名
  16.                  deltree($pathdir.'/'.$a);
  17.               }
  18.               if(is_empty_dir($pathdir.'/'.$a)) {//如果是空就直接删除
  19.                   rmdir($pathdir.'/'.$a);
  20.               }
  21.        }
  22.    }
  23.       $d->close();
  24.       echo \"必须先删除目录下的所有文件\";   //我调试时用的
  25.   }
  26. }

  27. function is_empty_dir($pathdir) {
  28. //判断目录是否为空
  29. $d=opendir($pathdir);
  30. $i=0;
  31. while($a=readdir($d)) {
  32.        $i++;
  33. }
  34. closedir($d);
  35. if($i>2){
  36.    return false;
  37. }
  38. else return true;
  39. }
复制代码

评分

参与人数 1可用积分 +10 信誉积分 +2 收起 理由
bs + 10 + 2 原创内容

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2010-10-27 17:23 |只看该作者
支持原创,虽然感觉技术不高,不过lz加油
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP