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

Delete All Except Specific Files and Files With Specific Extension

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

  1. 具体文件名
  2. 特定文件扩展名

下面的代码在上面第一点成功了,但是第二点没有成功。

   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
    }

我怎样才能同时满足这两个条件?

您需要稍微更改一下函数:

    <?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
    }
}