php - 在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 !";
?>
解决方案
一种方法是简单地替换_A
为_1
etc
<?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
推荐阅读
- ios - 如何使用 Objective-C 将一对多关系数据保存到核心数据中
- c# - 如何在c#中获取层次结构数据
- sql - 显示购买了超过 1 种产品但来自同一订阅的客户
- r - 如何在 R 中绘制带有条件 p 值和置信区间的 ANOVA?
- java - 请解释 read([] bytes) 的微妙之处
- google-sheets - Google表格公式:如果子字符串在单元格范围内,则求和
- continuous-integration - 如何配置 CI 以在每个合并请求之前增加测试覆盖率的百分比?
- java - 在Java中将jks转换为p12
- knex.js - 如何针对远程数据库运行 Knex 迁移?
- excel - 使用链接到命令按钮的“另存为”功能将当前图形保存在用户窗体图表中?