【问题标题】:php script to delete file names not matching a dynamic text filephp脚本删除与动态文本文件不匹配的文件名
【发布时间】:2022-10-15 01:47:38
【问题描述】:

我在 /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);

    }

}

【问题讨论】:

  • 将文件名读入数组。然后遍历目录中的名称,并测试文件名是否在数组中(使用in_array())。如果没有,请删除它。

标签: php


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多