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的知识
Nov 17 PHP
PHP 编写大型网站问题集
May 07 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
php curl基本操作详解
Jul 23 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
thinkphp普通查询与表达式查询实例分析
Nov 24 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
一个实用的php验证码类
Jul 06 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
php实现单笔转账到支付宝功能
Oct 09 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/04 冲泡冲煮
php 判断服务器操作系统的类型
2014/02/17 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
对python中的logger模块全面讲解
2018/04/28 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
python plotly画柱状图代码实例
2019/12/13 Python
python如何使用代码运行助手
2020/07/03 Python
浅析Python迭代器的高级用法
2020/07/16 Python
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
大学生写自荐信的技巧
2014/01/08 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
mysql如何能有效防止删库跑路
2021/10/05 MySQL
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫
python实现双链表
2022/05/25 Python