php fwrite 追加不工作

php fwrite append not working

您好,我正在尝试制作一个基于 HTML post 和基本 PHP.

的脚本

我在 HTML 上有 1 个输入,我有这个 PHP 代码:

<?php echo'h'?>

我的一个朋友说,如果我将 w 更改为 an,它会创建一个新行,所以我更改了它,但它仍然不起作用。

基本上我想做的是,当他们在文本框中输入任何单词时,它会将该单词写入文本文档,但第二次它不会创建新行,我只想创建换行。

这是我的完整代码:

<?PHP
    $file_handle = fopen("sample.txt", "r");
    $file_contents = $_POST['f1'];
    fwrite($file_handle, $file_contents);
    fclose($file_handle);
    print "file created and written to";
?>

我假设您想将已发布的行添加到以前存储的文件中?在这种情况下,您的代码将如下所示:

$file_handle = fopen("sample.txt", "a"); // append to previous contents
$file_contents = $_POST['f1'] . "\r\n";
fwrite($file_handle, $file_contents);
fclose($file_handle);
print "Content has been appended.";

有关不同 fopen() 模式的更多信息,请参见 in the documentation, chapter "modes" and more about escape sequences (like \r\n) can be found in the Strings chapter

还有其他看似更简单的函数,其名称为:file_put_contents()file_get_contents(),它们(在您的情况下)可用于使事情更容易处理。下面的代码显示了 file_put_contents() 的用法,它是 kin: file_get_contents() 来完成任务。

    <?php

        $fileName       = "sample.txt";

        // GET THE TEXT TYPED-IN BY THE USER...         
        // ONLY YOU KNOW THE WAY TO GET THIS VALUE BUT WE CAN ASSUME (FOR NOW)          
        // THAT IT IS COMING FROM THE POST VARIABLE AND HAS THE NAME: input
        $input          = isset($_POST['input']) ? $_POST['input'] : null;

        // FIRST TRY TO SEE IF THE FILE EXIST, OTHERWISE CREATE IT
        // HOWEVER; WITH JUST AN EMPTY CONTENT
        if(!file_exists($fileName)){
            file_put_contents($fileName, "");
        }           

        // DO THE SAVING ONLY IF WE HAVE ANY INPUT (STRING) TO SAVE
        if($input){
            // GET THE CURRENT CONTENTS OF THE FILE...
            $fileContent    = file_get_contents($fileName);

            // ADD THE INPUT TO THE CURRENT CONTENTS OF THE FILE (WITH A NEW LINE)
            $fileContent   .= "\n{$input}";

            // SAVE THE MODIFIED CONTENT BACK AGAIN...
            $bytesSaved     = file_put_contents($fileName, $fileContent);

            // IF THE FILE WAS SUCCESSFULLY WRITTEN... THEN...
            // DISPLAY A MESSAGE TO THAT EFFECT
            if($bytesSaved){
                print "file created and written";
            }

        }