У меня есть фотографии в папке, и я хотел бы переименовать их последовательно в двухзначное число. Я просмотрел и попробовал множество решений, но мне не удалось найти то, что я ищу. Теперь я отчаялся. Мне удалось найти этот код, но он переименовывает одну цифру от 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); } } ?>
Как я могу изменить приведенный выше код, чтобы сделать его двойной цифрой?
Измените sprintf('../thumbs/%d.jpg', $i+2);
к sprintf('../thumbs/%02d.jpg', $i+2);
Вы можете указать ширину целочисленного числа, используя цифру, предшествующую d
в %d
.
Вместо sprintf('../thumbs/%d.jpg', $i+2);
используйте sprintf('../thumbs/%02d.jpg', $i+2);
См. Также документы sprintf
Я бы предложил 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); } }
<?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); } }
?>