逐步重命名数组中的文件

时间:2015-03-09 18:00:21

标签: php arrays

我已经将一个装满文件的文件夹拉入阵列:

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);
        }

我已经给了自己大量的视觉指示以尝试和帮助,但我想我已经盯着它看太久了,老实说我无法解决它。

有谁有任何想法,我在这里做错了什么?

1 个答案:

答案 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];
}
相关问题