下面给大家提供几个函数参考。
实例一:
代码如下:
502_9@PHP @H_502_9@function deletedir($dir){ @H_502_9@ if(!handle=@opendir($dir)){ //检测要打开目录是否存在 @H_502_9@ die("没有该目录"); @H_502_9@ } @H_502_9@ while(false !==($file=readdir($handle))){ @H_502_9@ if($file!=="."&&$file!==".."){ //排除当前目录与父级目录 @H_502_9@ $file=$dir .DIRECTORY_SEPARATOR. $file; @H_502_9@ if(is_dir($file)){ @H_502_9@ deletedir($file); @H_502_9@ }else{ // www.jb51.cc@H_502_9@ if(@unlink($file)){ @H_502_9@ echo "文件$file@H_403_23@删除成功。
"; @H_502_9@ }else{ @H_502_9@ echo "文件$file@H_403_23@删除失败!
"; @H_502_9@ } @H_502_9@ } @H_502_9@ } @H_502_9@ if(@rmdir($dir)){ @H_502_9@ echo "目录$dir@H_403_23@删除成功了。
\n"; @H_502_9@ }else{ @H_502_9@ echo "目录$dir@H_403_23@删除失败!
\n"; @H_502_9@ } @H_502_9@} //测试程序 @H_502_9@$dir="/var/www/test"; @H_502_9@deletedir($dir); @H_502_9@?> @H_502_9@
"; @H_502_9@ }else{ @H_502_9@ echo "文件$file@H_403_23@删除失败!
"; @H_502_9@ } @H_502_9@ } @H_502_9@ } @H_502_9@ if(@rmdir($dir)){ @H_502_9@ echo "目录$dir@H_403_23@删除成功了。
\n"; @H_502_9@ }else{ @H_502_9@ echo "目录$dir@H_403_23@删除失败!
\n"; @H_502_9@ } @H_502_9@} //测试程序 @H_502_9@$dir="/var/www/test"; @H_502_9@deletedir($dir); @H_502_9@?> @H_502_9@
实例二:PHP递归删除目录方法(兼容中文目录和文件)
代码如下:
502_9@PHP @H_502_9@/*@H_502_9@本函数支持中文删除目录,由于我只测试了window下删除,linux未测试,如有问题可留言或者自己稍加修改即可。@H_502_9@如有错误欢迎大家指正,共同学习@H_502_9@*/@H_502_9@header("Content-type: text/html; charset=gb2312");function delete_dir($tmp_path){@H_502_9@ if(!is_writable($tmp_path) && is_dir($tmp_path)){@H_502_9@ chmod($tmp_path,0777);@H_502_9@ } $encode = mb_detect_encoding($tmp_path,array('UTF-8','GB2312','ASCII','GBK'));@H_502_9@ $tmp_path = iconv($encode,'gb2312',$tmp_path);@H_502_9@ $handle_object = scandir($tmp_path);@H_502_9@ if(count(scandir($tmp_path))==2){ if(rmdir($tmp_path)){@H_502_9@ echo $tmp_path.'@H_502_71@';@H_502_9@ }else{@H_502_9@ echo $tmp_path.'@H_502_71@';@H_502_9@ } return ; } foreach($handle_object as $val){ if($val!='..' && $val!='.' && $val!=''){ if(filetype($tmp_path.'/'.$val)=='dir'){ if(count(scandir($tmp_path.'/'.$val))==2){@H_502_9@ if(rmdir($tmp_path.'/'.$val)){@H_502_9@ echo $$tmp_path.'/'.$val.'@H_502_71@';@H_502_9@ }else{@H_502_9@ echo $$tmp_path.'/'.$val.'@H_502_71@';@H_502_9@ }@H_502_9@ }else{@H_502_9@ delete_dir($tmp_path.'/'.$val);@H_502_9@ } @H_502_9@ }else{@H_502_9@ if(unlink($tmp_path.'/'.$val)){@H_502_9@ echo $$tmp_path.'/'.$val.'@H_502_71@';@H_502_9@ }else{@H_502_9@ echo $$tmp_path.'/'.$val.'@H_502_71@';@H_502_9@ }@H_502_9@ } @H_502_9@ }else{ continue;@H_502_9@ } } @H_502_9@ if(rmdir($tmp_path)){@H_502_9@ echo $tmp_path.'@H_502_71@';@H_502_9@ }else{@H_502_9@ echo $tmp_path.'@H_502_71@';@H_502_9@ } return ; @H_502_9@}delete_dir('D:/AppServ/www/testing/哈哈');?>@H_502_9@
实例三:参数$dir文件名例子:admin/runtime 这样的
代码如下:
502_9@//删除目录及所包含文件函数 @H_502_9@function deldir($dir) { @H_502_9@ //打开文件目录 @H_502_9@ $dh = opendir($dir); @H_502_9@ //循环读取文件 @H_502_9@ while ($file = readdir($dh)) { @H_502_9@ if($file != '.' && $file != '..') { @H_502_9@ $fullpath = $dir . '/' . $file; //判断是否为目录 @H_502_9@ if(!is_dir($fullpath)) { @H_502_9@ echo $fullpath."已被删除
"; @H_502_9@ //如果不是,删除该文件 @H_502_9@ if(!unlink($fullpath)) { @H_502_9@ } @H_502_9@ } else { @H_502_9@ //如果是目录,递归本身删除下级目录 @H_502_9@ deldir($fullpath); @H_502_9@ } @H_502_9@ } @H_502_9@ } @H_502_9@ //关闭目录 @H_502_9@ closedir($dh); @H_502_9@ //删除目录 @H_502_9@ //if(rmdir($dir)) { @H_502_9@ // return true; @H_502_9@// } else { @H_502_9@ // return false; @H_502_9@ // } @H_502_9@}@H_502_9@
"; @H_502_9@ //如果不是,删除该文件 @H_502_9@ if(!unlink($fullpath)) { @H_502_9@ } @H_502_9@ } else { @H_502_9@ //如果是目录,递归本身删除下级目录 @H_502_9@ deldir($fullpath); @H_502_9@ } @H_502_9@ } @H_502_9@ } @H_502_9@ //关闭目录 @H_502_9@ closedir($dh); @H_502_9@ //删除目录 @H_502_9@ //if(rmdir($dir)) { @H_502_9@ // return true; @H_502_9@// } else { @H_502_9@ // return false; @H_502_9@ // } @H_502_9@}@H_502_9@
实例四:
代码如下:
502_9@PHP @H_502_9@function deldir($dirname){ @H_502_9@ if(file_exists($dirname)){//首先判断目录是否有效 @H_502_9@ $dir = opendir($dirname);//用opendir打开目录 @H_502_9@ while($filename = readdir($dir)){//使用readdir循环读取目录里的内容 @H_502_9@ if($filename != "." && $filename != ".."){//排除"."和".."这两个特殊的目录 @H_502_9@ $file = $dirname."/".$filename; @H_502_9@ if(is_dir($file)){//判断是否是目录,如果是则调用自身 @H_502_9@ deldir($file); //使用递归删除子目录 @H_502_9@ }else{ @H_502_9@ @unlink($file);//删除文件 @H_502_9@ } @H_502_9@ } @H_502_9@ } @H_502_9@ closedir($dir);//关闭文件操作句柄 @H_502_9@ rmdir($dirname);//删除目录 @H_502_9@ } @H_502_9@} @H_502_9@?>@H_502_9@
实例五:
代码如下:
3010">@H_502_9@/**@H_502_9@* 删除非空目录@H_502_9@* @method rrmdir@H_502_9@*/@H_502_9@function rrmdir ($dir) {
if (is_dir($dir)) {
$fs = array_slice(scandir($dir),2);@H_502_9@ foreach ($fs as $f) {@H_502_9@ $path = $dir . '/' . $f;@H_502_9@ is_dir($path) ? rrmdir($path) : unlink($path);@H_502_9@ }@H_502_9@ reset($fs);@H_502_9@ return rmdir($dir);@H_502_9@ }
}@H_502_9@
实例六:
代码如下:
502_9@PHP@H_502_9@function del_dir( $dir )@H_502_9@{@H_502_9@ if ( $handle = opendir( $dir ) )@H_502_9@ {@H_502_9@ while ( false !== ( $item = readdir( $handle ) ) )@H_502_9@ {@H_502_9@ if ( $item != "." && $item != ".." )@H_502_9@ {@H_502_9@ if ( is_dir( "$dir/$item" ) )@H_502_9@ {@H_502_9@ del_dir( "$dir/$item" );@H_502_9@ }@H_502_9@ else@H_502_9@ {@H_502_9@ unlink( "$dir/$item" ) ;@H_502_9@ }@H_502_9@ }@H_502_9@ }@H_502_9@ closedir( $handle );@H_502_9@ rmdir( $dir ) ;
原文链接:https://www.f2er.com/php/24785.html