rrmdir php中递归删除目录及目录下的文件


Posted in PHP onMay 15, 2011
function rrmdir($dir) { 
if (is_dir($dir)) { 
$objects = scandir($dir); 
foreach ($objects as $object) { 
if ($object != “.” && $object != “..”) { 
if (filetype($dir.”/”.$object) == “dir”) rrmdir($dir.”/”.$object); else unlink($dir.”/”.$object); 
} 
} 
reset($objects); 
} 
}

rmdir
(PHP 4, PHP 5)
rmdir — 删除目录
Report a bug 说明
bool rmdir ( string $dirname )
尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。成功时返回 TRUE, 或者在失败时返回 FALSE.
Note: 自 PHP 5.0.0 起 rmdir() 也可用于某些 URL 封装协议。参见Supported Protocols and Wrappers 的列表看看 rmdir() 支持哪些 URL 封装协议。
Note: 在 PHP 5.0.0 中增加了 对上下文(Context)的支持。有关 上下文(Context) 的说明参见 Stream 函数。
Note: 当启用 安全模式时, PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID(所有者)。
参见 mkdir() 和 unlink()。
<?php 
function rrmdir($dir) { 
if (is_dir($dir)) { 
$objects = scandir($dir); 
foreach ($objects as $object) { 
if ($object != "." && $object != "..") { 
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); 
} 
} 
reset($objects); 
rmdir($dir); 
} 
} 
?>

This isn't my code, but just thought I would share, since it took me so long to find. This is a function to delete a folder, all sub-folders, and files in one clean move.
Just tell it what directory you want deleted, in relation to the page that this function is executed. Then set $empty = true if you want the folder just emptied, but not deleted. If you set $empty = false, or just simply leave it out, the given directory will be deleted, as well.
 
<?php
function deleteAll($directory, $empty = false) {
if(substr($directory,-1) == "/") {
$directory = substr($directory,0,-1);
}
if(!file_exists($directory) || !is_dir($directory)) {
return false;
} elseif(!is_readable($directory)) {
return false;
} else {
$directoryHandle = opendir($directory);
while ($contents = readdir($directoryHandle)) {
if($contents != '.' && $contents != '..') {
$path = $directory . "/" . $contents;
if(is_dir($path)) {
deleteAll($path);
} else {
unlink($path);
}
}
}
closedir($directoryHandle);
if($empty == false) {
if(!rmdir($directory)) {
return false;
}
}
return true;
}
}
?>
[/code]
A patch to previous script to make sure rights for deletion is set:
<?php 
//Delete folder function 
function deleteDirectory($dir) { 
if (!file_exists($dir)) return true; 
if (!is_dir($dir) || is_link($dir)) return unlink($dir); 
foreach (scandir($dir) as $item) { 
if ($item == '.' || $item == '..') continue; 
if (!deleteDirectory($dir . "/" . $item)) { 
chmod($dir . "/" . $item, 0777); 
if (!deleteDirectory($dir . "/" . $item)) return false; 
}; 
} 
return rmdir($dir); 
} 
?>

更多说明可以参考 http://cn.php.net/rmdir
PHP 相关文章推荐
PHP图片上传类带图片显示
Nov 25 PHP
php知道与问问的采集插件代码
Oct 12 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
Destoon实现多表查询示例
Aug 21 PHP
php实现简单的MVC框架实例
Sep 23 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
PHP explode()函数用法讲解
Feb 15 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 PHP
centos 5.6 升级php到5.3的方法
May 14 #PHP
php中在PDO中使用事务(Transaction)
May 14 #PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 #PHP
PHP与C#分别格式化文件大小的代码
May 14 #PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 #PHP
php 数组的一个悲剧?
May 11 #PHP
php 归并排序 数组交集
May 10 #PHP
You might like
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现class对象转换成json/字典的方法
2016/03/11 Python
OpenCV实现人脸识别
2017/04/07 Python
python获取多线程及子线程的返回值
2017/11/15 Python
python实现感知器
2017/12/19 Python
基于python实现KNN分类算法
2020/04/23 Python
Django 内置权限扩展案例详解
2019/03/04 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
药学专业大学生个人的自我评价
2013/11/04 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
我为自己代言广告词
2014/03/18 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
学生保证书
2015/01/16 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android