php 用于删除与动态文本文件不匹配的文件名的脚本

php script to delete file names not matching a dynamic text file

我在 /home/users/images.txt 中创建了一个文本文件 (images.txt),该文件包含 jpeg 文件的名称。例如:

1.jpeg

12.jpeg

33.jpeg

此文件会定期更新并添加新的图像文件名

我正在寻找一个 php 脚本,它可以帮助从 .txt 中读取文件名并从 /home/user/images/ 目录中删除与 .txt 文件中的文件名不匹配的任何文件

我试过下面的代码,但无法正常工作

$array = explode("\n", file_get_contents('/home/user/images.txt'));

$directory = "/home/user/images/";

$files = glob($directory . "*.*");

foreach($files as $file)
{
 
   if (!in_array($file, $array)) {
       unlink($directory . $file);

    }

}

glob()返回的名称包含目录前缀,但$array返回的名称没有。搜索前需要去掉前缀,调用时不需要加unlink().

$array = file('/home/user/images.txt', FILE_IGNORE_NEW_LINES);
$directory = "/home/user/images/";
$files = glob($directory . "*.*");

foreach($files as $file)
{
   if (!in_array(basename($file), $array)) {
       unlink($file);
   }
}