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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
php 随机生成10位字符代码
Mar 26 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 PHP
怎样去阅读一份php源代码
Aug 21 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
PHP实现简单搜歌的方法
Jul 28 PHP
9个比较实用的php代码片段
Mar 15 PHP
PHP判断JSON对象是否存在的方法(推荐)
Jul 06 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 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进行批量任务处理不超时的解决方法
2016/07/11 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
Js面试算法详解
2018/04/08 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
学习python 之编写简单乘法运算题
2016/02/27 Python
Python 转义字符详细介绍
2017/03/21 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
浅谈python标准库--functools.partial
2019/03/13 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
解决python 上传图片限制格式问题
2019/10/30 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
经济学人订阅:The Economist
2018/07/19 全球购物
GWT都有什么特性
2016/12/02 面试题
施工班组长岗位职责
2014/01/05 职场文书
合作意向协议书范本
2014/03/31 职场文书
多媒体教室标语
2014/06/26 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
销售工作决心书
2015/02/04 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
可怜妈妈观后感
2015/06/09 职场文书
培训后的感想
2015/08/07 职场文书
图书馆义工感想
2015/08/07 职场文书
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS