2016-08-29 3 views
-6

Этот код для создания нового файла хорошо работает: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-001.txt, LMS-002.txt, СДО-003.txt и т. д. или LMS-1.txt, LMS-2.txt, LMS-3.txt. Я предпочитаю этот формат: LMS-001

Благодаря


Я хочу создать несколько файлов одной подчиненной формы. Таким образом, после повторного нажмите на кнопку отправки, будут созданы файлы, такие как:

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

Несмотря на то, как отмечено в комментариях Ваш вопрос неясен, я думаю, я понимаю, что вы хотите сделать, хотя, как говорится, вы должны отредактируйте вопрос, чтобы сделать его более понятным.

Если я прав, то вы спрашиваете, как создать новые файлы с числовым суффиксом, превышающим предыдущий, чтобы предотвратить перезапись. Простым способом сделать это является цикл 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 

Я проверил его и он работает, поэтому каждый раз, когда страница обновляется новый файл создается с численным суффиксом один выше, чем ранее созданного файла. Я сделал это так, чтобы он создавал максимум до 100 файлов, вы можете настроить это, как вам угодно, с переменной $ maxFilesNum, расположенной вверху, но я рекомендую установить лимит, чтобы ваша файловая система была на вашем локальном или удаленный сервер не заполняется файлами.

Edit: Теперь включает отступы для 001, 002 ... 100

+0

Thats it! Спасибо! Возможно создать имя файла следующим образом: – Tlumic

+0

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

+0

@Tlumic Для этого вы можете просто использовать str_pad(), чтобы нанести левый с ведущими 0 до тех пор, пока вы не достигнете сотен, поэтому в качестве примера вы можете использовать это для переменной $ i в цикле for(): 'str_pad ($ i, 3, 0, STR_PAD_LEFT) ', я отредактировал его в ответ, если вы хотите увидеть его в действии.Также обязательно отметьте вопрос, как ответьте, щелкнув зеленый значок проверки рядом с моим ответом :) –

Смежные вопросы