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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
我的论坛源代码(十)
Oct 09 PHP
PHP中文件上传的一个问题
Sep 04 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
Drupal7中常用的数据库操作实例
Mar 02 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP底层运行机制与工作原理详解
Jul 31 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
自动分页的不完整解决方案
2007/01/12 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
Prototype RegExp对象 学习
2009/07/19 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
js post提交调用方法
2014/02/12 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
新学期家长寄语
2014/01/19 职场文书
乡下人家教学反思
2014/02/01 职场文书
销售提升方案
2014/06/07 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
公司职员入党自传书
2015/06/26 职场文书