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 相关文章推荐
第六节--访问属性和方法
Nov 16 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 PHP
php中数组首字符过滤功能代码
Jul 31 PHP
深入解析PHP中逗号与点号的区别
Aug 05 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
May 10 PHP
YII中assets的使用示例
Jul 31 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
php7 安装yar 生成docker镜像
May 09 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
PHP _construct()函数讲解
Feb 03 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 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中实现记住密码自动登录的代码
2011/03/02 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
Python单元和文档测试实例详解
2019/04/11 Python
简单了解Python生成器是什么
2019/07/02 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
2014年新生军训方案
2014/05/01 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
python实现手机推送 代码也就10行左右
2022/04/12 Python
Redis keys命令的具体使用
2022/06/05 Redis