PHP递归删除目录几个代码实例


Posted in PHP onApril 21, 2014

下面给大家提供几个函数参考。

实例一:

<?php  
function deletedir($dir){  
      if(!handle=@opendir($dir)){     //检测要打开目录是否存在  
               die("没有该目录");  
      }  
     while(false !==($file=readdir($handle))){  
               if($file!=="."&&$file!==".."){       //排除当前目录与父级目录  
                            $file=$dir .DIRECTORY_SEPARATOR. $file;  
                            if(is_dir($file)){  
                                  deletedir($file);  
                            }else{  // 3water.com
                                  if(@unlink($file)){  
                                         echo "文件<b>$file</b>删除成功。<br>";  
                                  }else{  
                                          echo  "文件<b>$file</b>删除失败!<br>";  
                                 }  
                }  
     }  
    if(@rmdir($dir)){  
           echo "目录<b>$dir</b>删除成功了。<br>\n";  
    }else{  
           echo "目录<b>$dir</b>删除失败!<br>\n";  
  }  
}  //测试程序  
$dir="/var/www/test";  
deletedir($dir);  
?> 

实例二:Php递归删除目录方法(兼容中文目录和文件)

<?php 
/*
本函数支持中文删除目录,由于我只测试了window下删除,linux未测试,如有问题可留言或者自己稍加修改即可。
如有错误欢迎大家指正,共同学习
*/
header("Content-type: text/html; charset=gb2312");function delete_dir($tmp_path){
 
    if(!is_writable($tmp_path) && is_dir($tmp_path)){
        chmod($tmp_path,0777);
    }
    $encode = mb_detect_encoding($tmp_path, array('UTF-8','GB2312','ASCII','GBK'));
    $tmp_path = iconv($encode,'gb2312',$tmp_path);
 
    $handle_object = scandir($tmp_path);
 
    if(count(scandir($tmp_path))==2){
        if(rmdir($tmp_path)){
            echo $tmp_path.'<br />';
        }else{
            echo $tmp_path.'<br />';
        }
        return ;
    }
    foreach($handle_object as $val){        
        if($val!='..' && $val!='.' && $val!=''){
            if(filetype($tmp_path.'/'.$val)=='dir'){
                if(count(scandir($tmp_path.'/'.$val))==2){
                    if(rmdir($tmp_path.'/'.$val)){
                        echo $$tmp_path.'/'.$val.'<br />';
                    }else{
                        echo $$tmp_path.'/'.$val.'<br />';
                    }
                }else{
                    delete_dir($tmp_path.'/'.$val);
                }           
            }else{
                if(unlink($tmp_path.'/'.$val)){
                    echo $$tmp_path.'/'.$val.'<br />';
                }else{
                    echo $$tmp_path.'/'.$val.'<br />';
                }
            }           
        }else{
            continue;
        }
    }
     
    if(rmdir($tmp_path)){
        echo $tmp_path.'<br />';
    }else{
        echo $tmp_path.'<br />';
    }
        return ;
     
}
delete_dir('D:/AppServ/www/testing/哈哈');
?>

实例三:参数$dir文件名例子:admin/runtime 这样的

//删除目录及所包含文件函数   
function deldir($dir) {   
     //打开文件目录   
     $dh = opendir($dir);   
     //循环读取文件   
     while ($file = readdir($dh)) {   
         if($file != '.' && $file != '..') {   
             $fullpath = $dir . '/' . $file;       //判断是否为目录   
             if(!is_dir($fullpath)) {   
       echo $fullpath."已被删除<br>";   
                  //如果不是,删除该文件   
                 if(!unlink($fullpath)) {                  
                 }   
            } else {   
                 //如果是目录,递归本身删除下级目录                
     deldir($fullpath);   
            }   
        }   
   }   
    //关闭目录   
     closedir($dh);   
   //删除目录   
  //if(rmdir($dir)) {   
    //    return true;   
//    } else {   
     //    return false;   
  //  }   
}

实例四:

<?php  
function deldir($dirname){  
    if(file_exists($dirname)){//首先判断目录是否有效  
        $dir = opendir($dirname);//用opendir打开目录  
        while($filename = readdir($dir)){//使用readdir循环读取目录里的内容  
         if($filename != "." && $filename != ".."){//排除"."和".."这两个特殊的目录  
            $file = $dirname."/".$filename;  
            if(is_dir($file)){//判断是否是目录,如果是则调用自身  
                deldir($file); //使用递归删除子目录    
            }else{  
              @unlink($file);//删除文件  
            }  
          }  
        }  
            closedir($dir);//关闭文件操作句柄  
            rmdir($dirname);//删除目录  
    }  
}  
?>

实例五:

/**
 * 删除非空目录
 * @method rrmdir
 */
function rrmdir ($dir) {
    if (is_dir($dir)) {
        $fs = array_slice(scandir($dir), 2);
        foreach ($fs as $f) {
            $path = $dir . '/' . $f;
            is_dir($path) ? rrmdir($path) : unlink($path);
        }
        reset($fs);
        return rmdir($dir);
    }
}

实例六:

<?php
function del_dir( $dir )
{
  if ( $handle = opendir( $dir ) )
  {
    while ( false !== ( $item = readdir( $handle ) ) )
    {
      if ( $item != "." && $item != ".." )
      {
        if ( is_dir( "$dir/$item" ) )
        {
          del_dir( "$dir/$item" );
        }
        else
        {
          unlink( "$dir/$item" ) ;
        }
      }
    }
    closedir( $handle );
    rmdir( $dir ) ;
  }
}
?>
PHP 相关文章推荐
php基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
mysql时区问题
Mar 26 PHP
生成卡号php代码
Apr 09 PHP
PHP之数组学习
May 29 PHP
php命名空间学习详解
Feb 27 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
PHP使用递归按层级查找数据的方法
Nov 10 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 #PHP
php setcookie函数的参数说明及其用法
Apr 20 #PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 #PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 #PHP
PHP不用递归实现无限分级的例子分享
Apr 18 #PHP
利用php下载xls文件(自己动手写的)
Apr 18 #PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 #PHP
You might like
PR值查询 | PageRank 查询
2006/12/20 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
Python: glob匹配文件的操作
2020/12/11 Python
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
药店主任岗位责任制
2014/02/10 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
团员个人年度总结
2015/02/26 职场文书
办公用品管理制度
2015/08/04 职场文书
学校安全管理制度
2015/08/06 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL