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+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
PHP缓冲区用法总结
Feb 14 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
PHP文件上传小程序 适合初学者学习!
May 23 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 PHP
如何运行/调试你的PHP代码
Oct 23 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
php中实现简单的ACL 完结篇
2011/09/07 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP反射基础知识回顾
2020/09/10 PHP
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
Node.js pipe实现源码解析
2017/08/12 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
python 编写简单网页服务器的实例
2018/06/01 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
python调用接口的4种方式代码实例
2019/11/19 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
租房协议书范本
2014/04/09 职场文书
初中生物教学随笔
2015/08/15 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP