人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのereg_replaceで正規表現を使っています。
画像ファイル名を連番に変えたいのですが、どう書けばいいでしょうか。
具体的に言うと、
$file_name = シリアル番号 として、
var.pngやfoo.jpgをそれぞれ
$file_name.pngや$file_name.jpg
に変えたいです。

●質問者: takeuchi_k
●カテゴリ:コンピュータ
✍キーワード:.jpg PHP PNG シリアル ファイル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nalchin
●40ポイント

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

◎質問者からの返答

ありがとうございます。

六つのファイルをいっぺんに処理できなくても、一つずつの処理で十分です。


2 ● 吉法師
●40ポイント

http://de3.php.net/manual/ja/

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で.で割って処理してしまいました。

ピリオドは一つだけ、ということで・・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ