备战2018php批量删除文件归纳总结(实战篇)
编辑: admin 2017-12-07
-
4
php程序开发网站过程中,比如希望网站既支持动态浏览又可以设置生成静态html文件的形式。当从静态html模式切换到动态的时候,我们往往需要将相应文件夹中已经生成的html文件删除掉。可以选择手动删除,不过这样比较麻烦。下面是我在开发类似网站功能中写的一个php批量删除文件夹目录下指定后缀名的文件函数,如下:
先定义函数del_file,如下,“//后的为注释说明”:
/*
*@param $path文件夹绝对路径 $delfile_type待删除文件的后缀名称
*return void
*/
function del_file($path,$delfile_type='bak'){
//判断要删除的文件类型是否合格
if(!preg_match('/^[a-zA-Z]{2,}$/',$delfile_type)){
return false;
}
//判断当前路径是否为文件夹或可读的文件
if(!is_dir($path)||!is_readable($path)){
return false;
}
//遍历当前目录下所有文件
$all_files=scandir($path);
foreach($all_files as $filename){
//跳过当前目录和上一级目录
if(in_array($filename,array(".", ".."))){
continue;
}
//进入到$filename文件夹下
$full_name=$path.'/'.$filename;
//判断当前路径是否是一个文件夹,是则递归调用函数
//否则判断文件类型,匹配则删除
if(is_dir($full_name)){
del_file(($full_name,$delfile_type);
}else{
preg_match("/(.*)\.$delfile_type/",$filename,$match);
if(!empty($match[0][0])){
echo $full_name;
echo '<br>';
unlink($full_name);
}
}
}
}
在程序的适当位置,定义要删除html所在的文件夹目录,并调用del_file函数即可。del_file函数使用方法如下:
$folderpath= $_SERVER["DOCUMENT_ROOT"]."/a";//这里指定要操作的文件夹目录
$arr_deltype=array('.html','.htm','.shtml');//指定要删除的文件后缀
foreach($arr_deltype as $delfile_type){
del_file(($folderpath,$delfile_type);
}