php fwrite追加不起作用

时间:2016-08-18 12:32:54

标签: php append fwrite

您好我正在尝试创建一个基于HTML post和基本PHP的脚本。

我有一个关于HTML的输入,我有这个PHP代码:

<?php echo'h'?>

我的一位朋友说,如果我将w更改为a,它会创建一个新行,所以我更改了它并且它仍然无效。

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

这是我的完整代码:

<?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";
?>

2 个答案:

答案 0 :(得分:0)

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

$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,章节&#34;模式&#34;有关转义序列的更多信息(如\r\n)可以找到in the Strings chapter

答案 1 :(得分:0)

还有其他看似简单的函数名称:file_put_contents()file_get_contents(),可以使用(在您的情况下)使事情更容易处理。下面的代码显示了使用file_put_contents()及其亲属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";
            }

        }