2016-08-29 6 views
-6

新しいファイルを作成するためにこのコードを作成うまく機能:LMS-001.txt、LMS-002.txt、003.txt LMS-:PHPは特定の名前を持つファイル

<?php 
$myfile = fopen("LMS-NUMBER.txt", "w") or die("Unable to open file!"); 
$txt = "John Doe\n"; 
fwrite($myfile, $txt); 
$txt = "Jane Doe\n"; 
fwrite($myfile, $txt); 
fclose($myfile); 
?> 

私のような名前を持つファイルを作成したいです またはLMS-1.txt、LMS-2.txt、LMS-3.txt。私はこの形式を好む:LMS-001

おかげ


は、私は1つのフォーム提出することにより、複数のファイルを作成します。あなたの質問は不明であるコメントで指摘し、私はのように述べていますが、あなたがすべき、私はあなたが何をしたいのかを理解すると考えていても

1st click = LMS-1.txt; 
2nd click = LMS-2.txt; 
3rd click = LMS-3.txt; 
+0

ためのパディング[ 'のsprintf()'](http://php.net/manual/en/function.sprintf.php)などが含まれています。 '$ name = sprintf(" LMS-%03d.txt "、$ number);' – Sammitch

+0

'fopen( 'LMS-001.txt'、 'w')' – PHPglue

+1

あなたはあなたが望むものをもっと具体的にすることができますか? 'LMS-001.txt'という名前のファイルを作成したいのであれば、単に" newfile.txt "を" LMS-001.txt "に置き換えるのが分かりやすいはずです。 –

答えて

1

:だからで再クリックボタンを提出した後、同様のファイルが作成されます。より明確にするために質問を編集してください。

もし私が正しいのであれば、上書きを防ぐために、前のファイルよりも1つ上の数字の接尾辞を持つ新しいファイルを作成する方法があります。これを行う簡単な方法は、コアファイル名+カウント番号がすでに存在するかどうかをチェックし、存在しないものが見つかるまで続けるfor()ループです。次に、ファイルが存在しないループの繰り返しでファイル名を保存し、最後にその名前の新しいファイルに書き込むことができます。一例として、

<?php 
    /* Here you can set the core filename (from your question, "LMS"), 
    as well as the number of maximum files. */ 
    $coreFileName = "LMS"; 
    $maxFilesNum = 100; 

    // Will store the filename for fopen() 
    $filename = ""; 

    for($i = 0; $i < $maxFilesNum; $i++) 
    { 
     // File name structure, taken from question context 
     $checkFileName = $coreFileName . "-" . str_pad($i, 3, 0, STR_PAD_LEFT) . ".txt"; 

     // If the file does not exist, store it in $filename for writing 
     if(!file_exists($checkFileName)) 
     { 
      $filename = $checkFileName; 
      break; 
     } 
    } 

    $fd = fopen($filename, "w"); 
    fwrite($fd, "Jane Doe"); // Change string literal to the name to write to file from either input or string literal 
    fclose($fd); // Free the file descriptor 

私はそれをテストしてみたし、それがそうするたびにページが新しいファイルが以前に作成したファイルよりも高い数値サフィックス1を使用して作成されて更新され、動作します。私はこれを作ったので最大100ファイルまでしか作成できませんが、上の方に$ maxFilesNum変数を付けて調整することはできますが、あなたのローカルまたはローカルのファイルシステムがリモートサーバーはファイルでいっぱいになりません。

編集:今すぐ001、002 ... 100

+0

それはそれです!ありがとうございました! このようなファイル名を作成することができます: – Tlumic

+0

LMS-001.txt、LMS-002.txt ... LMS-099.txt、LMS-100.txt? – Tlumic

+0

@Tlumicこれを行うには、str_pad()を使用して左端に先行する0を貼り付けます。例として、これをfor()ループの変数$ iに使用できます: 'str_pad($ i、 3、0、STR_PAD_LEFT) '、あなたはそれを実際に見たいと思ったら答えに編集しました。また、私の答えの横にある緑色のチェック画像をクリックして質問に回答してください: –

関連する問題