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