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批量生成随机用户名
Jul 10 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
Feb 17 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
解决Laravel5.5下的toArray问题
Oct 15 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
傻瓜化配置PHP环境――Appserv
2006/12/13 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
Prototype Template对象 学习
2009/07/19 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
python3去掉string中的标点符号方法
2019/01/22 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
python中shell执行知识点
2020/05/06 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
应付会计岗位职责
2013/12/12 职场文书
毕业生自荐书
2013/12/18 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
羽毛球比赛策划方案
2014/06/13 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
解决MySQL报“too many connections“错误
2022/04/19 MySQL