【问题标题】:php fwrite append not working [closed]php fwrite追加不起作用[关闭]
【发布时间】:2016-12-25 09:26:38
【问题描述】:

您好,我正在尝试制作一个基于 HTML 帖子和基本 PHP 的脚本。

我有 1 个 HTML 输入,我有这个 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";
?>

【问题讨论】:

  • 你在说什么w
  • 您没有发布任何相关代码
  • 对不起,我不能发布它没有用
  • 请不要在 cmets 中转储代码。将其添加到您的问题中作为编辑stackoverflow.com/posts/39018351/edit - 编辑:没关系,我为你做了。

标签: php append fwrite


【解决方案1】:

还有其他看似更简单的函数名称: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";
            }

        }

【讨论】:

    【解决方案2】:

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

    $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找到,章节“模式”和更多关于转义序列(比如\r\n)可以在in the Strings chapter找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 2017-03-08
      • 1970-01-01
      • 2011-11-10
      • 2014-04-15
      • 2018-02-27
      • 1970-01-01
      • 2015-03-04
      相关资源
      最近更新 更多