首页 > 解决方案 > 在php中重命名文件夹中所有图像的最佳方法是什么?

问题描述

我是 PHP 新手,想知道如何重命名 PHP 文件夹中的所有图片。

我有一个包含不同图片的文件夹,所有图片都命名为:

- BBBOF1_0090_A.jpg
- BBBOF1_0090_B.jpg
- BBBOF1_0090_C.jpg
- BBDOTR_0070_A.jpg
- BBDOTR_0070_B.jpg
....

我想在每个图像的名称前添加一个 K 并将数字 1,2,3,4,5... 更改为 a,b,c,d

最后我应该有:

- KBBBOF1_0090_1.jpg
- KBBBOF1_0090_2.jpg
- KBBBOF1_0090_3.jpg
- KBBDOTR_0070_1.jpg
- KBBDOTR_0070_2.jpg
....

请问我该怎么做?我尝试使用重命名功能添加 K,但是对于字母被数字替换的部分,我不知道该怎么做。

<?php

$path = $_POST['path'];


   $dir    = $path;
   $allFiles = scandir($dir);

   foreach($allFiles as $file) {

        if (!in_array($file,array(".","..")))
      { 
  
      $file = $dir.$file;
      $filename = basename( $file );

   
        $newname = "K$filename";

        rename ("C:/wamp64/www/KMD/Photos/$filename", "C:/wamp64/www/KMD/new/$newname");
        
    }


  }

    
echo "good !";
?>

标签: phpimagerename

解决方案


一种方法是简单地替换_A_1etc

<?php
$files = [
    'BBBOF1_0090_A.jpg',
    'BBBOF1_0090_B.jpg',
    'BBBOF1_0090_C.jpg',
    'BBDOTR_0070_A.jpg',
    'BBDOTR_0070_B.jpg'
];

$replacers = [
    array_map(fn($v) => '_'.$v, range('A', 'Z')), 
    array_map(fn($v) => '_'.$v, range(1, 26))
];

foreach ($files as $file) {
    echo 'K'.str_replace($replacers[0], $replacers[1], $file).PHP_EOL;
}

结果

KBBBOF1_0090_1.jpg
KBBBOF1_0090_2.jpg
KBBBOF1_0090_3.jpg
KBBDOTR_0070_1.jpg
KBBDOTR_0070_2.jpg

在线查看:https ://3v4l.org/BBArn


推荐阅读