PHP技巧:PHP中几种删除目录的三种方法

1、递规法:

以下为引用的内容:
deleteDir($dir)
{
if (rmdir($dir)==false && is_dir($dir)) {
 if ($dp = opendir($dir)) {
  while (($file=readdir($dp)) != false) {
   if (is_dir($file) && $file!='.' && $file!='..') {
    deleteDir($file);
   } else {
    unlink($file);
   }
  }
  closedir($dp);
 } else {
  exit('Not permission');
 }
}
}

2、系统调用法

以下为引用的内容:
function del_dir($dir)
{
if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
    $str = "rmdir /s/q " . $dir;
} else {
    $str = "rm -Rf " . $dir;
}
}

3、循环法

以下为引用的内容:

function deltree($pathdir)
{
echo $pathdir;//我调试时用的
if(is_empty_dir($pathdir))//如果是空的
   {
   rmdir($pathdir);//直接删除
   }
   else
   {//否则读这个目录,除了.和..外
       $d=dir($pathdir);
       while($a=$d->read())
       {
       if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);}
       //如果是文件就直接删除
       if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..'))
       {//如果是目录
           if(!is_empty_dir($pathdir.'/'.$a))//是否为空
           {//如果不是,调用自身,不过是原来的路径+他下级的目录名
           deltree($pathdir.'/'.$a);
           }
           if(is_empty_dir($pathdir.'/'.$a))
           {//如果是空就直接删除
           rmdir($pathdir.'/'.$a);
           }
       }
       }
       $d->close();
   echo "必须先删除目录下的所有文件";//我调试时用的
   }
}
function is_empty_dir($pathdir)
{
//判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空
$d=opendir($pathdir);
$i=0;
   while($a=readdir($d))
   {
   $i++;
   }
closedir($d);
if($i>2){return false;}
else return true;
}

时间: 2024-10-29 22:49:58

PHP技巧:PHP中几种删除目录的三种方法的相关文章

JS中动态创建元素的三种方法总结(推荐)_javascript技巧

1.动态创建元素一 document.write() 例如向页面中输出一个 li 标签 <pre class="html" name="code"><span style="font-size:12px;"><script> document.write("<li>123</li>"); </script></span> body标签中就会插入

JavaScript中数组去除重复的三种方法_javascript技巧

废话不多说了,具体方法如下所示: 方法一:返回新数组每个位子类型没变 function outRepeat(a){ var hash=[],arr=[]; for (var i = 0; i < a.length; i++) { hash[a[i]]!=null; if(!hash[a[i]]){ arr.push(a[i]); hash[a[i]]=true; } } console.log(arr); } outRepeat([2,4,4,5,"a","a"

Word中输入立方米符号的三种方法

  Word中输入立方米符号的三种方法         Word中输入立方米符号方法一:输入法输入 其实现在有些输入法中集成了很多特殊符号,例如搜狗拼音中就有立方米符号,我们只需要打出立方米的拼音,就会出现一个立方米符号的选项. Word中输入立方米符号方法二:利用制作上标的方法 用制作上标的方法可以做出立方米符号的效果,但这种方法其实还可以细分为几种不同的操作,下面一一进行介绍. 一.在Word文档中输入3,然后将其选中,切换到"开始"选项卡,单击"上标"按钮即可

jsp页面中插入css样式的三种方法总结

 本篇文章主要是对jsp页面中插入css样式的三种方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1. 外部样式   当样式需要应用于很多页面时,外部样式表将是理想的选择.在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观.每个页面使用<link>标签链接到样式表.<link>标签在(文档的)头部:   <head> <link rel="stylesheet"  type="text/css&qu

分析在Worklight中开发本地功能的三种模式

文章将分析在 Worklight 中开发本地功能的三种模式:调用 Cordova 支持的本地功能:通过 Worklight common API 调用开发的本地功能:编写 Cordova 的插件,调用本地功能.然后通过相应的实例展现不同方法的使用模式,向读者展现 Worklight 在和本地功能结合上的能力.最后分析各自的优缺点和使用的环境. 纯 web 模式的局限性 在 Worklight 架构下,纯 web 模式虽然可以像本地应用一样被安装在手机上,但是所提供的服务和传统的网页相比,几乎没有

C/C++程序开发中实现信息隐藏的三种类型_C 语言

无论是模块化设计,还是面向对象设计,还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏按照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 不可见不可用 就是说模块内部的变量.结构体.类定义对外部而已完全隐藏,外部对此一无所知.常用的实现方法就是利用不透明指针,请参见我的博文C语言开发函数库时利用不透明指针对外隐藏结构体细节. 这种方法同样适用于C++语言,一种可能的实现方式为面向接口编程. 头文件 IMyClass.h class

MVC3中,在control里面三种Html代码输出形式

MVC3中,在control里面三种Html代码输出形式:ViewData["msg"] = "<br /> Title <br />"; 1.页面显示效果: @Html.Raw() : 不直接输出html代码,常用场合(使用编辑器 保存文章图片等时)    Title    使用:@Html.Raw(ViewData["msg"].ToString()) 2.页面显示效果: <br /> Title <

android中Webview实现截屏三种方式小结

本人最近学习了android中Webview实现截屏三种方式,下面我来记录一下,有需要了解的朋友可参考.希望此文章对各位有所帮助. 第一种方式 通过调用webview.capturePicture(),得到一个picture对象,根据图像的宽和高创建一个Bitmap,再创建一个canvas,绑定bitmap,最后用picture去绘制. //获取Picture对象 Picture picture = wv_capture.capturePicture(); //得到图片的宽和高(没有reflec

一个困惑,两种干货,三种能力

现在最火的电商模式莫非O2O,似乎人们已经渐渐将最早的盈利模式B2B淡忘.事实上,B2B网站仅仅是被遗忘,而没有被灭亡.很多有眼光的人依然奔波于B2B网站之间. 现在大家谈论最多的就是火得一塌糊涂的O2O,很多人已经忘记了作为最初电子商务盈利模式的B2B.其实作为元老,B2B还有它的活力和存在的价值,眼光独到的人依然在经营者B2B新站.从笔者接触到的大大小小B2B网站中,有的已经小有所成,有的却还是一片空白.对于新站的成长,笔者有经验要分享,不能说是电子商务解决方案,但是总结起来总会有帮助,它们