删除具有特定扩展名的特定文件和文件以外的所有文件

时间:2016-01-30 18:45:48

标签: php file wildcard glob unlink

我想删除文件夹中的所有文件,但文件包含:

  1. 特定文件名
  2. 特定文件扩展名
  3. 以下代码在上述第一点成功,但不是第二点。

       function deletefiles()
        {
        $path = 'files/';
    
        $filesToKeep = array(
            $path."example.jpg",
            $path."123.png",
            $path."*.mkv"
        );
    
        $dirList = glob($path.'*');
    
        foreach ($dirList as $file) {
            if (! in_array($file, $filesToKeep)) {
                if (is_dir($file)) {
                    rmdir($file);
                } else {
                    unlink($file);
                }//END IF
            }//END IF
        }//END FOREACH LOOP
        }
    

    我怎样才能达到这两个条件?

1 个答案:

答案 0 :(得分:1)

你需要改变你的功能:

    <?php

function deletefiles()
{
    $path = 'files/';

    $filesToKeep = array(
        $path . "example.jpg",
        $path . "123.png",

    );

    $extensionsToKeep = array(
        "mkv"
    );

    $dirList = glob($path . '*');

    foreach ($dirList as $file) {

        if (!in_array($file, $filesToKeep)) {
            if (is_dir($file)) {
                rmdir($file);
            } else {
                $fileExtArr = explode('.', $file);
                $fileExt = $fileExtArr[count($fileExtArr)-1];
                if(!in_array($fileExt, $extensionsToKeep)){
                    unlink($file);
                }
            }//END IF
        }//END IF
    }
}