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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
php自动适应范围的分页代码
Aug 05 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
基于php iconv函数的使用详解
Jun 09 PHP
php 强制下载文件实现代码
Oct 28 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
php base64 编码与解码实例代码
Mar 21 PHP
PHP程序守护进程化实现方法详解
Jul 16 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实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
Python自定义简单图轴简单实例
2018/01/08 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Python中存取文件的4种不同操作
2018/07/02 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
党员个人思想汇报
2013/12/28 职场文书
服务员岗位责任制
2014/02/11 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
行政监察建议书
2014/05/19 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
听证通知书
2015/04/24 职场文书
老干部座谈会主持词
2015/07/03 职场文书