首页 > 解决方案 > 使用 PHP 从文本文件列表中删除多个文件及其名称变体

问题描述

我需要创建一个脚本来删除 wordpress 目录中的一堆图像。您可能已经知道,单个图像文件可以有多个变体,具体取决于图像的渲染方式。

无论如何,我有一个文本文件中的图像列表,其中包含以下内容:

wp-content/uploads/2018/09/L_14BQ-FK1
wp-content/uploads/2018/09/L_15EKP160VIBROBT-KIT
wp-content/uploads/2018/09/L_29DS15172GB
wp-content/uploads/2018/09/L_29DS18172GB
wp-content/uploads/2018/09/L_29DS2415

例如,我需要删除 L_14BQ-FK1.jpg 及其变体,例如 L_14BQ-FK1-100x100.jpg、L_14BQ-FK1-200x200.jpg 等。

到目前为止,我已经在 foreach 中尝试了 foreach,但它不起作用:

$list = file('list.txt');
if ($list === false) {
    die('Cannot open file');
}

foreach($list as $file){
$theFile = glob($file.'*.jpg');  

   foreach ($theFile as $single){
     echo $single."<br>";
   }
}

令人惊讶的是,回声只产生了最后一个列表及其变体,L_29DS2415-100x100.jpg、L_29DS2415-100x200.jpg 等

有人可以帮忙吗?

标签: php

解决方案


阅读 php.net 上的文件手册,我刚刚意识到从函数 FILE 返回的数组包含新行,因此通过添加 'FILE_IGNORE_NEW_LINES | 的标志来修改我的原始代码。FILE_SKIP_EMPTY_LINES' 完美运行。

所以最终的代码将是:

$list = file('list.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if ($list === false) {
    die('Cannot open file');
}

foreach($list as $file){
$theFile = glob($file.'*.jpg');  

   foreach ($theFile as $single){
     echo $single."<br>";
   }
}

推荐阅读