1 <?php
2 /**
3 *@param $path文件夹绝对路径 $file_type待删除文件的后缀名
4 *return void
5 */
6 function clearn_file($path, $file_type = 'bak')
7 {
8 //判断要清除的文件类型是否合格
9 if (!preg_match('/^[a-zA-Z]{2,}$/', $file_type)) {
10 return false;
11 }
12 //当前路径是否为文件夹或可读的文件
13 if (!is_dir($path) || !is_readable($path)) {
14 return false;
15 }
16 //遍历当前目录下所有文件
17 $all_files = scandir($path);
18 foreach ($all_files as $filename) {
19 //跳过当前目录和上一级目录
20 if (in_array($filename, array(".", ".."))) {
21 continue;
22 }
23 //进入到$filename文件夹下
24 $full_name = $path . '/' . $filename;
25 //判断当前路径是否是一个文件夹,是则递归调用函数
26 //否则判断文件类型,匹配则删除
27 if (is_dir($full_name)) {
28 clearn_file($full_name, $file_type);
29 } else {
30 preg_match("/(.*)\.$file_type/", $filename, $match);
31 if (!empty($match[0][0])) {
32 echo $full_name;
33 echo '<br>';
34 unlink($full_name);
35 }
36 }
37 }
38 }
39
40 //测试一下
41 $folderpath = $_SERVER["DOCUMENT_ROOT"] . "/abc";//要操作的目录
42 $deltype = array('gif', 'jpg', 'pdf');
43 foreach ($deltype as $file_type) {
44 clearn_file($folderpath, $file_type);
45 }