0

我的文件夹中有图片,我想将它们按顺序重命名为两位数。我浏览并尝试了很多解决方案,但我没有找到我想要的东西。我现在变得绝望了。我设法找到了这个代码,但它将一位数字从 1 重命名为 9,从 10 开始重命名两位数字。我希望它从 01.jpg、02.jpg、03.jpg 等开始计算...

<?php

$files = glob('../thumbs/*');

foreach($files as $i => $name) {
    $newname = sprintf('../thumbs/%d.jpg', $i+2);
    if ($newname != $name) {
        rename($name, $newname);
    }
}


?>

如何修改上述代码以使其成为两位数?

4

4 回答 4

3

更改sprintf('../thumbs/%d.jpg', $i+2);sprintf('../thumbs/%02d.jpg', $i+2);

于 2013-03-06T16:45:08.643 回答
0

d您可以使用in前面的数字指定整数的宽度%d

而不是sprintf('../thumbs/%d.jpg', $i+2);使用sprintf('../thumbs/%02d.jpg', $i+2);

另见 sprintf 文档

于 2013-03-06T16:47:13.170 回答
0

我建议 str_pad http://www.php.net/str_pad采用更灵活的方法:

  $files = glob('../thumbs/*');

    foreach($files as $i => $name) {
  {
         $index = str_pad($i, 2, "0", STR_PAD_LEFT);

        $newname = sprintf('../thumbs/%d.jpg', $index);
        if ($newname != $name) {
            rename($name, $newname);
        }
    }
于 2013-03-06T16:48:59.423 回答
-1
<?php

$files = glob('../thumbs/*');

foreach($files as $i => $name) {
    if ($i < 10) {
        $index = "0".$i;
    }
    else {
        $index = $i;
    }
    $newname = sprintf('../thumbs/%d.jpg', $index);
    if ($newname != $name) {
        rename($name, $newname);
    }
}

?>

于 2013-03-06T16:45:23.513 回答