php清理当前目录下的指定文件和空目录(源码),建议服务器端执行

<?php
/**
* @desc 解析当前目录并递归删除目录下的指定文件 
* @author mengdj<mengdj@outlook.com> 2014.10.02 1530
*/
//定义脚本持续执行直到退出为止
set_time_limit(0);
ignore_user_abort(true);

$global_filter=array("html","css","php","htm","txt","inc","js","vbs");
$global_filter&&$global_filter=array_flip($global_filter);

//获取文件后缀
if(!function_exists("get_extension")){
    function get_extension($file){
        return substr($file,strrpos($file,'.')+1);
    } 
}

//递归删除空目录
if(!function_exists("rm_empty_dir")){
    function rm_empty_dir($path){  
        if(is_dir($path) && ($handle = opendir($path))!==false){  
            while(($file=readdir($handle))!==false){     
                if($file!='.'&&$file!='..'){  
                    $curfile = $path.'/'.$file;          
                    if(is_dir($curfile)){                
                        rm_empty_dir($curfile);          
                        if(count(scandir($curfile))==2){ 
                            echo ($curfile)." D<br/>";
                            @rmdir($curfile);
                        }  
                    }  
                }  
            }  
            closedir($handle);  
        }  
    } 
}

//递归删除指定文件类型
if(!function_exists("scan_dirs")){
    function scan_dirs($baseDir){
        global $global_filter;
        if($file_handler=opendir($baseDir)){
            while(($file=readdir($file_handler))!==false){
                   if($file!='.'&&$file!='..'){
                    if(!is_dir($baseDir."/".$file)){
                        if($file!="scan.php"&&array_key_exists(strtolower(get_extension($baseDir."/".$file)),$global_filter)){
                            echo $baseDir."/".$file."<br/>";
                            @unlink($baseDir."/".$file);
                            //检测是否为为空目录
                        }
                    }else{
                         $dirname = $baseDir."/".$file;
                         scan_dirs($dirname);
                    }
                   }
              }
              //判断目录是否为空
            rm_empty_dir($baseDir);
            closedir($file_handler);
        }
    }
}

$baseDir=".";
isset($_GET['dir'])&&$baseDir=trim($_GET['dir']);
scan_dirs($baseDir);
?>

相关文档:php服务器端清理无效软链接

原文地址:https://www.cnblogs.com/mengdejun/p/4008311.html