画像ファイル名を連番に変えたいのですが、どう書けばいいでしょうか。
具体的に言うと、
$file_name = シリアル番号 として、
var.pngやfoo.jpgをそれぞれ
$file_name.pngや$file_name.jpg
に変えたいです。
http://php.s3.to/man/function.preg-replace.html
preg_replace
変換元がどういった内容なのかわからないので期待されている答えかわからないですが
連番を付ける変換の場合、ereg_replace() を使うより
Perl互換の preg_replace() を使った方が簡単なのでは? と思います。
--------------
サンプルソース
--------------
<?
// 変換元がこういう文字列なら
$str = ’
var.png
var.jpg
var.gif
foo.png
foo.jpg
foo.gif
’;
// 連番用シリアル?
$file_name = 1;
echo preg_replace(”/¥w+¥.(¥w+)/e”, ’sprintf(”%05d.%s”, $file_name++, ”¥¥1”)’, $str);
exit;
?>
--------------
結果
--------------
00001.png 00002.jpg 00003.gif 00004.png 00005.jpg 00006.gif
PHP: PHP マニュアル - Manual
$imgtype = array(
IMG_GIF=>’GIF’,
IMG_JPG=>’JPG’,
IMG_PNG=>’PNG’
);
$directory = ”ディレクトリのパス”;
$dh = opendir($directory);
while($filename = readdir($dh)){
if(is_file($directory.$filename)){
list($width, $height, $type, $attr) = getimagesize($directory.$filename);
$newfilename = $file_name .’.’. $imgtype[$type];
rename($directory.$filename, $directory.$newfilename);
}
}
質問の意味がいまいちわからなかったのですが、上記のように、あるディレクトリ以下のファイルを見つけてリネームするのはどうでしょうか?
さらにif文のところに条件を加えてあげればファイルを限定できると思います。
ありがとうございます。
けっきょくexplodeで.で割って処理してしまいました。
ピリオドは一つだけ、ということで・・・
ありがとうございます。
六つのファイルをいっぺんに処理できなくても、一つずつの処理で十分です。