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和Cookie的区分与解释
Mar 16 PHP
PHP生成月历代码
Jun 14 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
php include和require的区别深入解析
Jun 17 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php中动态修改ini配置
Oct 14 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
Apr 22 PHP
PHP与以太坊交互详解
Aug 24 PHP
PHP数组与字符串互相转换实例
May 05 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判断变量是否为0的方法
2014/02/08 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
Python实现Restful API的例子
2019/08/31 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
Python 创建TCP服务器的方法
2020/07/28 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
真诚的求职信
2014/07/04 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
开业庆典致辞
2015/08/01 职场文书
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android
部分武汉产收音机展览
2022/04/07 无线电
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏