2007.08.10 13:08

php :: ユニークな連番ファイル名を得るための関数

php :: ユニークな連番ファイル名を得るための関数

コンピュータでファイルを保存するときに、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にユニークなファイル名が格納される。

再帰的なフローは頭がこんがらがってきますねー。パズルみたいでおもしろかったっす。

このエントリーのトラックバックURL

http://blog.3ot.net/ping/946

commented by:

ヒロヤ
2007.08.10

あ、いうのを忘れましたが、ディレクトリのパーミッションを確認するとか、存在するかどうか確認するなんていう機能は含まれてないので、そこらへんは別途に実装する必要があります。

コメント
comment bottom

コメントプリーズ