ホームページ > php教程 > php手册 > PHP での新しいファイルの自動番号付けのアイデアと実装

PHP での新しいファイルの自動番号付けのアイデアと実装

WBOY
リリース: 2016-06-13 12:07:54
オリジナル
1035 人が閲覧しました

要件: システムに新しいファイルを作成するときに、自動番号付けを実装できます。たとえば、新しいテキスト ファイルのデフォルトのファイル名は「New Text Document.txt」です。新しいテキスト ファイルの作成を続けると、ファイル名は自動的に「New Text Document (2).txt」に変更されます。は 3、4、5 になります...このアルゴリズムを PHP でどのように使用しますか?
当初はループを使用してそれを実行したいと考えていましたが、それを考えて、インクリメントするためにカウンターを使用しました。この TME はデータベース、ファイル、または構成ファイルにすることができます。ループはやり方にもよりますが、新しいファイルを作成するたびにループする必要がある場合は、どこにでもキャッシュが存在します。 >コードをコピーします

コードは次のとおりです: $dir="/web/csp/images/test/"; if(!file_exists($dir.'cache.txt')){

file_put_contents ($dir.'cache.txt',1);

file_put_contents($dir.'新しいファイル.txt','' );
}else{
$num = file_get_contents($dir.'cache.txt');
$name = '新しいファイル('.$num.')。 txt';
file_put_contents($dir.'cache.txt',$num) ;
file_put_contents($dir.$name,'');


Silver Children's Shoes の書き換えバージョン



コードをコピーします

コードは次のとおりです:

function createFile($filename, $content = '') { if(file_exists( $filename . '.tmp')) {

$num = (int) file_get_contents($ファイル名 . '.tmp') 1;

$fileinfo = pathinfo($filename);
file_put_contents ($fileinfo['filename'] .'(' . $num . ').'拡張子'], $content);
file_put_contents($filename . '.tmp', $num);
else
{
file_put_contents($filename, $content); 🎜>file_put_contents($filename . '.tmp', 1);
}
}
createFile('test.txt');


3 番目のタイプ、循環



コードをコピー

コードは次のとおりです:


$files = scandir('.'); //このコードは Web ルート ディレクトリに書き込まれます

$num = 0; $str = '新しいテキスト ドキュメント' ($files as $) k=> $file) { if (is_file($file) && preg_match('/(.*) ((d )).txt/', $file, $matched)) { $num = $matched[2]>$num ? $matched[2] : }

}

$filename = $num == 0.txt : $str . '(' . ($num 1) . ').txt';
if (fopen( $filename, 'w')) {
echo 'ファイルが正常に作成されました:' .
}
?>


以下はネチズンからの返信です:
1. いくつかのファイルを自動的に作成した後、
>例: 現在新しく作成されたファイルには
新しいファイル.txt
新しいファイル (2).txt
新しいファイル (3).txt
この時点でこれら 3 つのファイルが削除された場合、
新しいファイル(2).txt
新しいファイル(3).txt
これら2つを実行してください。 Cache.txtのカウントの問題により、実行時に新しく作成されるファイルは新しいファイル (4).txt

は、シーケンスに従ってインテリジェントに作成されません。
また、上記の操作により、Windows で新しく作成されるファイルの名前は、
新しいファイル (2).txt
2. 2 番目の段落について
まず、上記の問題があるはずですが、さらに深刻なのは、作成されたファイルでファイル名と拡張子の間の区切り文字が欠落していることです。
、つまり:
test.txt
test(2)txt
test(3) txt
test(4)txt
その理由は、ファイル名を結合するときに、拡張子のドットは追加されません。



Copy code

コードは次のとおりです。


file_put_contents($fileinfo[' filename'] . '(' . $num . ')' .$fileinfo['extension'], $content);



もっと面白くて短い段落を作りましょう。 >上記のキャッシュ(tmpファイル)や正規表現(preg_match)を使う方法より効率が良いはずです

コードをコピー コードは以下の通りです。 :

$prefix = '新しいテキストドキュメント';
$suffix = '.txt';

$t = $prefix.$suffix;/ /新しいテキスト ドキュメント.txt
$i = 1;
while(file_exists($t)){//新しいテキスト ドキュメント( d ).txt
$t = $prefix.'('. $ i.')'.$suffix;
}

fopen($t, 'w'));

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート