- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像ファイル名を、指定順に従って変更したいのですが)
画像ファイルを指定順に変更する方法
このQ&Aのポイント
- 画像ファイルのリネームは、指定順に従って行うことができます。
- 元画像ファイル名をリネーム順に変換し、リネーム後の画像名を使って画像を変更することが可能です。
- 画像ファイルの移動や順序変更に伴って、それに応じてリネームされた画像名を使用することで、指定順に並べられた画像を得ることができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
画像名を新しい番号でrenameしたいのですよね? ループ内で1つ1つrenameするのが王道でしょうけど、同名ファイルが存在する可能性が高く、is_file次第で 新名画像を"tmpimg" などと逃がしてから再renameしたり、拡張子を取得したりとけっこう煩雑になりそうです。 単純に、一旦全ファイルを [ 新No.旧No.拡張子 ]にrenameし、次に旧Noの部分を削除して[ 新No.拡張子 ]としてはどうでしょう? $imgs = array('a_1.jpg' ,'a_2.jpg' ,'a_3.jpg' ,'a_4.png' ,'a_5.gif'); $sort = array(1,2,5,3,4); //新Noを冠した画像名の配列 $tmpImgs=array(); //一旦 すべてに新Noをかぶせて [新No.旧No.拡張子] にする foreach($sort as $k=>$v){ $oldImgName = $imgs[$v-1]; $tmpImgName = "a_".($k+1).".$oldImgName"; rename($oldImgName,$tmpImgName); $tmpImgs[] = $tmpImgName; } //真ん中の 旧No の部分を削除して[新No.拡張子]に foreach($tmpImgs as $tmpname){ list($new,$old,$ext) = explode('.',$tmpname); rename($tmpname,"$new.$ext"); }
お礼
回答ありがとうございました。 大変参考になりましたー