PHP创建具有特定名称的文件

时间:2016-08-29 22:53:50

标签: php file filenames fopen

这个创建新文件的代码效果很好:

<?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,LMS-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;

1 个答案:

答案 0 :(得分: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变量来调整你喜欢的方式,不过我建议设置一个限制,以便你的文件系统在你的本地或远程服务器不会被文件淹没。

修改:现在包含001,002 ... 100

的填充