我已经将一个装满文件的文件夹拉入阵列:
Array
(
[2] => 2_1_page2-img5.jpg
[3] => 2_2_page2-img5-big.jpg
[4] => 3_1_page2-img6.jpg
[5] => 3_2_page2-img6-big.jpg
[6] => 4_1_page2-img3.jpg
[7] => 4_2_page2-img3-big.jpg
[8] => 6_2_page2-img3-big.jpg
[9] => 8_2_page2-img3-big.jpg
)
我尝试创建一个脚本,将所有脚本重命名,以便从1开始并逐步重命名。理想的解决方案是:
Array
(
[2] => 1_1_page2-img5.jpg
[3] => 1_2_page2-img5-big.jpg
[4] => 2_1_page2-img6.jpg
[5] => 2_2_page2-img6-big.jpg
[6] => 3_1_page2-img3.jpg
[7] => 3_2_page2-img3-big.jpg
[8] => 4_2_page2-img3-big.jpg
[9] => 5_2_page2-img3-big.jpg
)
我不知道每个数字是否会附加一个或两个图像。
到目前为止,我已经:
$filecounter = 1;
$previousNumber = $filecounter;
foreach($listing as $imagename){
// $imagename: the original filename
// $prefixNumber: the first number from the filename
// $reducedfilename: the filename without the prefix
// $previousNumber: the previous number
// $filecounter: the count up from 1
$prefixNumber = stristr($imagename, '_',true);
$reducedfilename = ltrim(stristr($imagename, '_'), '_');
if ($prefixNumber != $filecounter && $prefixNumber != $previousNumber){
$previousNumber = $filecounter;
$filecounter++;
echo "filecounter: $filecounter<br>prefixNumber: $prefixNumber<br>previousNumber: $previousNumber<br>";
echo "1. Renaming: " .$imagename . " to " . $filecounter . "_" . $reducedfilename . "<br><br>";
//rename($directory . $imagename, $directory . $filecounter. "_" . $reducedfilename);
} else {
echo "filecounter: $filecounter<br>prefixNumber: $prefixNumber<br>previousNumber: $previousNumber<br>";
echo "2. Renaming: " .$imagename . " to " . $previousNumber . "_" . $reducedfilename . "<br><br>";
//rename($directory . $imagename, $directory . $previousNumber . "_" . $reducedfilename);
}
我已经给了自己大量的视觉指示以尝试和帮助,但我想我已经盯着它看太久了,老实说我无法解决它。
有谁有任何想法,我在这里做错了什么?
答案 0 :(得分:1)
我觉得这样的事可能适合你。
$filecounter = 1;
$currentPrefix = false;
$lastPrefix = false;
foreach ($listing as $imagename) {
$aFileParts = explode('_', $imagename);
$currentPrefix = $aFileParts[0];
if (!$lastPrefix) {
$lastPrefix = $currentPrefix;
}
if ($currentPrefix != $lastPrefix) {
$filecounter++;
$lastPrefix = $currentPrefix;
}
$newFileName = $filecounter . '_' . $aFileParts[1] . '_' . $aFileParts[2];
}