php :: ユニークな連番ファイル名を得るための関数
2007/8/10 (Fri) at 1:25 pm
コンピュータでファイルを保存するときに、untitled_1, untitled_2みたいに連番のファイル名が勝手につくじゃないですか。『○○のコピー』っていうのも同じですが、うっかり上書き保存してしまわないためにそうなってるんだと思いますが、ウェブサーバにテキストファイルを保存するプログラムにもそういう機能が欲しいですよネ。
てわけで関数をつくってみました。指定したディレクトリの中のファイル名を読みとって、
untitled_数字.txt
みたいなファイル名を返します。『数字』のトコには数字じゃなくて、1とか2とか3とかが入ります。いわなくてもわかるか。ディレクトリの中に、
untitled_1.txt
untitled_2.txt
untitled_3.txt
とあれば、
untitled_4.txt
という文字列を返します。1から順に追っていって重複しないところで連番をつけるという機能です。1、2、3、5みたいに間が欠けてるときにはそこに入ります。こういうの要るときないすか?スクリプトはこちらから↓
んじゃま、使い方の説明を。3つの引数を指定します。
1番目の引数: 対象ディレトリへのパス
例: /www/path/to/directory
2番目の引数: ファイル名の前半部分
例: untitled_
3番目の引数: ファイル名の後半部分。拡張子とドットを含む。
例: .txt
4、5番目の引数はブランクにします。再帰的に呼び出すときに使われるので。てわけなんで、こんなかんじに使います↓
$dir = "./data";
$prefix = "untitled_";
$suffix = ".txt";
$str = unique_filename($dir, $prefix, $suffix);
//$strにユニークなファイル名が格納される。
再帰的なフローは頭がこんがらがってきますねー。パズルみたいでおもしろかったっす。
コメント・プリーズ!
PROFILE![]()
藤居ヒロヤ。ウェブデザイナー/ウェブディレクター。ウェブデザインオフィス、3OT NET主宰。名古屋市中区。「優しいデザイン」「激しいデザイン」「正しいデザイン」「セクシーなデザイン」「泣けるデザイン」「もっともなデザイン」... 。あなただけのウェブデザインを丹精込めておつくり致します。見積り依頼等、お気軽にお問い合わせ下さい。
- www. http://www.3ot.net/
- email. admin [atmark] 3ot.net
- phone. 052 323 7376
RECENT ENTRIES![]()
- ダイコクドラッグが近所にできた
- ライブドアのBLOGOSをよく読みます
- jQuery :: 画像のリロード
- タムの絵
- Javascript :: ecl.jsにながらくお世話になりました
- サーバ移転&ブログのデザインをすこし変えました
- php :: 正規表現 :: 名前つきキャプチャというのを習った
- jQuery :: ネストしたリスト + ui.sortable.js
- jQuery :: event delegationてナニ?
- 「『白いクスリ』について」を読んで思った
RECENT COMMENTS![]()
- タムの絵 [2]
- ふ (12/05)
- いら (12/04)
- php :: 正規表現 :: 名前つきキャプチャというのを習った [3]
- ふ (11/12)
- ふ (10/18)
- ふ (10/18)
- php :: html文字列を決まった文字数で分割する関数 [1]
- ふ (10/18)
- jQuery :: ネストしたリスト + ui.sortable.js [3]
- ふ (09/30)
- ふ (09/28)
- ふ (09/28)
- s-box.js - Lightbox-like Javascript with jQuery and SimpleModal plugin [4]
- Hiroya (09/29)
- Mike (09/29)
- Hiroya (09/29)
- Mike (09/28)
- Skype、米国とカナダで固定/携帯電話への通話無料化 [1]
- もんた (09/20)
- Lace :: ajax :: ブラウザで使えるサクサクチャット [4]
- ふ (09/17)
TOOLS![]()
- s-box.js
- Link2WikipediaEncoder
- QR_CodeGenerator
- PagerankChecker
- IntrocucePhpCodeOnBlog
- FaviconGenerator
- Whois
- SiteThumbnailGenerator (Beta)
- EmailAddressEncoder (Legacy!)
BOOKMARKS![]()
RESOURCES![]()
- 99designs
- COMPUTER ARTS
- CPAN
- PHP標準関数逆引き辞典
- SMASHING MAGAZINE
- UNIXコマンド
- ajaxload.info
- deviantART
- deviantART :: PS Brushes
- deviantART :: PS Shapes
- fotosearch.com
- hotscripts.com
- hotscripts.com :: php
- iconlet.com
- jQuery Reference
- php.net :: 関数レファレンス
- psbrushes.net
- turnkeyforms.com
ARCHIVE![]()
- 2010年1月 (1)
- 2009年12月 (2)
- 2009年11月 (3)
- 2009年10月 (1)
- 2009年9月 (9)
- 2009年8月 (7)
- 2009年6月 (7)
- 2009年5月 (1)
- 2009年4月 (8)
- 2009年3月 (1)
- 2009年1月 (1)
- 2008年12月 (3)
- 2008年11月 (1)
- 2008年4月 (1)
- 2008年1月 (3)
- 2007年12月 (1)
- 2007年10月 (3)
- 2007年9月 (5)
- 2007年8月 (4)
- 2007年7月 (13)
- 2007年6月 (22)
- 2007年5月 (30)
- 2007年4月 (15)
- 2007年3月 (12)
- 2007年2月 (7)
- 2007年1月 (16)
- 2006年12月 (23)
- 2006年11月 (9)
- 2006年10月 (3)
- 2006年9月 (2)
- 2006年8月 (6)
- 2006年7月 (4)
- 2006年6月 (6)
- 2006年5月 (10)
- 2006年3月 (17)
- 2006年2月 (8)
- すべての投稿 (265)

あ、いうのを忘れましたが、ディレクトリのパーミッションを確認するとか、存在するかどうか確認するなんていう機能は含まれてないので、そこらへんは別途に実装する必要があります。
このエントリにいまもアクセスが多いんですが、これは2年も前に書いたヤツでありまして、少し恥ずかしいです。@とか使ってるし。。。。いつかもっといいのに、書き直したいと思ってるのですが。。どうもスマセン。