我有以下PHP代码来按顺序重命名图片:
function sequentialImages($path) {
$i = 1;
$files = glob($path."/{*.gif,*.jpg,*.jpeg,*.png}",GLOB_BRACE|GLOB_NOSORT);
$count = count($files);
foreach ( $files as $file ) {
$newname = str_pad($i, strlen($count)+1, '0', STR_PAD_LEFT);
$ext = substr(strrchr($file, '.'), 1);
$newname = $path.'/pictures'.$newname.'.'.$ext;
if ( $file != $newname ) {
rename($file, $newname);
}
$i++;
}
}
我想重命名
01.jpg to picture01.jpg
02.jpg to picture02.jpg
03.jpg to picture03.jpg
04.jpg to picture04.jpg
.....
10.jpg to picture10.jpg
11.jpg to picture11.jpg
我得到的输出是
pictures001.jpg
pictures002.jpg
pictures003.jpg
pictures004.jpg
....
pictures010.jpg
pictures011.jpg
我希望如果图像序列小于9,它前面会有一个'0'。如果它是10或更多,则不会有额外的零。
我尝试添加
for ($i=1; $i<=21; $i++) {
if($i<=9) {
//code
}
else {
//code
}
}
但它也没有用。
答案 0 :(得分:2)
如果您想使用str_pad
和,您将保留99个文件,那么您应该硬编码要填充的长度。
$newname = str_pad($i, 2, '0', STR_PAD_LEFT);
当然,正如Loz Cherone正确提到的,更好的方法是使用sprintf
。
sprintf("%02d", $i)