删除文件夹中的所有文件和文件夹,以结尾的文件和文件夹为准

拉斐尔·赫斯科维奇(Rafael Herscovici)

我被要求创建一个cron作业,以从一个文件夹中删除所有文件和文件夹(递归),不包括某些文件扩展名。

我有以下代码(可以在网上找到):

function rrmdir($dir) {
    $structure = glob(rtrim($dir, "/").'/*');
    if (is_array($structure)) {
        foreach($structure as $file) {
            if (is_dir($file)) rrmdir($file);
            elseif (is_file($file)) unlink($file);
        }
    }
    rmdir($dir);
}

这将从指定的文件夹中删除所有内容,但是正如我所说,我需要在其中添加异常(不应删除所有“ .php”文件)。

请为文件夹采用以下结构:

FOLDER1
FOLDER2
FOLDER3
FILE1.ZIP
FILE2.ZIP
DONOTDELETE1.PHP
DONOTDELETE2.PHP

因此,除php文件外,所有内容均应删除

谁能帮我这个?

沙特沙尔马

这是修改后的功能,请尝试使用此功能。这将删除除*.phpOR*.PHP文件之外的所有文件

function rrmdir($dir) {
    $structure = glob(rtrim($dir, "/").'/*');

    $rm_dir_flag = true;

    if (is_array($structure))
    {
        foreach($structure as $file) 
        {
            if (is_dir($file))
            {
                rrmdir($file);
            }
            else if(is_file($file))
            {
                $ext = substr($file, -4);
                if($ext==".php" || $ext==".PHP")
                {
                    $rm_dir_flag = false;
                }
                else
                {
                    unlink($file);
                }   
            }   
        }
    }

    if($rm_dir_flag)
    {
        rmdir($dir);
    }   
}

更新2:

如果您想保护具有特定扩展名的文件,可以执行此操作

rrmdir($your_directory, ".php");

//or

rrmdir($your_directory, ".pdf");

//or

rrmdir($your_directory, ".jpeg");

function rrmdir($dir, $protect_extension) {

       if(!is_dir($dir))
       {
             return;
       }
       $len = strlen($protect_extension)*(-1);


        $structure = glob(rtrim($dir, "/").'/*');

        $rm_dir_flag = true;

        if (is_array($structure))
        {
            foreach($structure as $file) 
            {
                if (is_dir($file))
                {
                    rrmdir($file, $protect_extension);
                }
                else if(is_file($file))
                {
                    $ext = substr($file, $len);
                    if($ext==$protect_extension || $ext==strtoupper($protect_extension))
                    {
                        $rm_dir_flag = false;
                    }
                    else
                    {
                        unlink($file);
                    }   
                }   
            }
        }

        if($rm_dir_flag)
        {
            rmdir($dir);
        }   
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章