PHP删除指定路径下的指定后缀的文件

有时,我们需要使用PHP对文件进行操作,例如删除目录下指定后缀的文件,代码如下:

<?php
/**
 *@param $path文件夹绝对路径 $file_type待删除文件的后缀名
 *return void
 */
function clearn_file($path, $file_type = 'bak')
{
    //判断要清除的文件类型是否合格
    if (!preg_match('/^[a-zA-Z]{2,}$/', $file_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)) {
            clearn_file($full_name, $file_type);
        } else {
            preg_match("/(.*)\.$file_type/", $filename, $match);
            if (!empty($match[0][0])) {
                echo $full_name;
                echo '<br>';
                unlink($full_name);
            }
        }
    }
}

测试代码:

$folderpath = $_SERVER["DOCUMENT_ROOT"] . "/abc";//要操作的目录
$deltype = array('gif', 'jpg', 'pdf');
foreach ($deltype as $file_type) {
    clearn_file($folderpath, $file_type);
}

我的实际项目中的代码:删除当前文件所在目录下的tmp后缀的文件:

clearn_file(dirname(__FILE__), 'tmp');