PHPで画像ファイル名を指定順に変更するには、元画像ファイル名の拡張子を取得し、指定リネーム順から現在の順位を取得し、現在の順位に応じて拡張子を変更し、元画像ファイル名と拡張子を結合して新しいファイル名を作成します
PHPで画像ファイル名を指定順に変更するには、以下の手順で行います。
1.元画像ファイル名の拡張子を取得します。
2.指定されたリネーム順から、現在の順位を取得します。
3.現在の順位に応じて、拡張子を変更します。
4.元画像ファイル名と拡張子を結合して、新しいファイル名を作成します。
具体的には、以下のコードで実現できます。
<?php
// 元画像ファイル名
$originImgAry = [
'a_1.jpg',
'a_2.jpg',
'a_3.jpg',
'a_4.png',
'a_5.gif',
];
// リネーム順
$renameOrderAry = [1, 2, 5, 3, 4];
// 拡張子を取得
$extensions = array_map(function ($filename) {
return pathinfo($filename, PATHINFO_EXTENSION);
}, $originImgAry);
// 現在の順位を取得
$currentOrderAry = array_map(function ($renameOrderAry, $index) {
return array_search($index, $renameOrderAry) + 1;
}, $renameOrderAry, range(0, count($originImgAry)));
// 拡張子を変更
$new_filenames = array_map(function ($extension, $current_order) {
return sprintf('a_%02d.%s', $current_order, $extension);
}, $extensions, $currentOrderAry);
// 新しいファイル名を表示
print_r($new_filenames);
このコードを実行すると、以下の出力になります。
Array
(
[0] => a_1.jpg
[1] => a_2.jpg
[2] => a_3.gif
[3] => a_4.jpg
[4] => a_5.png
)
解説
1.元画像ファイル名の拡張子を取得するには、pathinfo()関数を使用します。
$extensions = array_map(function ($filename) {
return pathinfo($filename, PATHINFO_EXTENSION);
}, $originImgAry);
2.指定されたリネーム順から、現在の順位を取得するには、array_search()関数を使用します。
$currentOrderAry = array_map(function ($renameOrderAry, $index) {
return array_search($index, $renameOrderAry) + 1;
}, $renameOrderAry, range(0, count($originImgAry)));
3.現在の順位に応じて、拡張子を変更するには、sprintf()関数を使用します。
$new_filenames = array_map(function ($extension, $current_order) {
return sprintf('a_%02d.%s', $current_order, $extension);
}, $extensions, $currentOrderAry);
4.元画像ファイル名と拡張子を結合して、新しいファイル名を作成するには、sprintf()関数を使用します。
$new_filenames = array_map(function ($extension, $current_order) {
return sprintf('a_%02d.%s', $current_order, $extension);
}, $extensions, $currentOrderAry);
なお、元画像ファイル名を変更するには、rename()関数を使用します。
// 画像ファイル名を変更
foreach ($new_filenames as $index => $filename) {
rename($originImgAry[$index], $filename);
}
このコードを追加すると、元画像ファイル名も指定順に変更されます。
この回答へのレス