2013-03-06 78 views
0

我有一个文件夹中的图片,我想将它们顺序重命名为两位数字。我浏览并尝试了很多解决方案,但我无法找到所需的东西。我现在绝望了。我设法找到这个代码,但它重命名从1到9的一个数字,以及从10开始的两个数字。我会把它想且具出发01.JPG,02.JPG,03.jpg,等...PHP图像重命名两位数

<?php 

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

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


?> 

如何修改上面的代码,使之成为双位数?

回答

3

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

+0

优秀。谢谢 :-) – MtDemonics 2013-03-06 16:59:02

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

?>

0

可以指定使用%dd前述中数字的整数的宽度。

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

See sprintf docs also

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