Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除文件夹中的所有文件和文件夹,但以结尾的文件和文件夹除外_Php_Recursion_Delete File - Fatal编程技术网

Php 删除文件夹中的所有文件和文件夹,但以结尾的文件和文件夹除外

Php 删除文件夹中的所有文件和文件夹,但以结尾的文件和文件夹除外,php,recursion,delete-file,Php,Recursion,Delete File,我被要求创建一个cron作业,从文件夹中删除所有文件和文件夹(递归) 不包括一些文件扩展名 我有以下代码(我在网上找到): 将从指定的文件夹中删除任何内容, 但如前所述,我需要在中添加异常(不应删除所有“.php”文件) 请假定文件夹的结构如下: FOLDER1 FOLDER2 FOLDER3 FILE1.ZIP FILE2.ZIP DONOTDELETE1.PHP DONOTDELETE2.PHP 因此,除了php文件之外,所有内容都应该删除 有人能帮我吗?你能试试这个吗,如果($ext!=

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

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

将从指定的文件夹中删除任何内容, 但如前所述,我需要在中添加异常(不应删除所有“.php”文件)

请假定文件夹的结构如下:

FOLDER1
FOLDER2
FOLDER3
FILE1.ZIP
FILE2.ZIP
DONOTDELETE1.PHP
DONOTDELETE2.PHP
因此,除了php文件之外,所有内容都应该删除


有人能帮我吗?

你能试试这个吗,如果($ext!='php'){


此函数已修改,请尝试使用此函数。这将删除除
*.php
*.php
档案

更新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);
        }   
    }

是否确定在$file中具有文件的完整路径函数按原样工作,请查看我的编辑。我认为$file值不匹配请确保彼此相同认为$file值具有额外空间或字符有何区别?调用中没有文件扩展名异常?是否可以将异常添加到函数的调用中n?@Krish R如果你调用每个
rmdir($dir)
对于每个文件夹,如果该文件夹中有php文件,会发生什么?我发布的函数将删除文件夹中的所有内容。包括php文件。@Dementric请参阅我对@krish r的评论answer@Dementic注释这里你想说什么函数应该有一个参数到'exption files'。我猜因为你你没有验证文件夹是否存在,该功能在不存在的目录上失败。让我们
    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)){
                    $info = pathinfo($file);
                    $ext = strtolower($info['extension']);
                    if($ext!='php'){
                        unlink($file);
                    }
                }
            }
        }
        rmdir($dir);
    }
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);
    }   
}
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);
        }   
    }