【问题标题】:How to write into a file in PHP?如何在 PHP 中写入文件?
【发布时间】:2010-12-18 15:22:47
【问题描述】:

我在一台免费的 PHP 支持服务器上有这个脚本:

<html>
<body>

<?php
$file = fopen("lidn.txt","a");


fclose($file);
?>

</body>
</html>

它创建了文件lidn.txt,但它是空的。

如何创建一个文件并在其中写入一些内容, 比如“猫追老鼠”这句台词?

【问题讨论】:

    标签: php file


    【解决方案1】:
    $fp = fopen('lidn.txt', 'w');
    fwrite($fp, 'Cats chase');
    fwrite($fp, 'mice');
    fclose($fp);
    

    http://php.net/manual/en/function.fwrite.php

    【讨论】:

      【解决方案2】:

      考虑fwrite()

      <?php
      $fp = fopen('lidn.txt', 'w');
      fwrite($fp, 'Cats chase mice');
      fclose($fp);
      ?>
      

      【讨论】:

      • @sathish 在像上面那样写入文件后我们如何在不关闭文件的情况下读取文件(fclose($fp) ),我尝试使用$fp = fopen('lidn.txt', 'w+');$fp = fopen('lidn.txt', 'a+');,但它们都不起作用跨度>
      • @KasunSiyambalapitiya 见rewind()
      【解决方案3】:
      $text = "Cats chase mice";
      $filename = "somefile.txt";
      $fh = fopen($filename, "a");
      fwrite($fh, $text);
      fclose($fh);
      

      你使用fwrite()

      【讨论】:

      • 在像上面那样写入文件后,我们如何在不关闭文件的情况下读取文件(fclose($fh)),我尝试使用$fh = fopen('lidn.txt', 'w+');,` $fh = fopen('lidn.txt', 'a+'); ` 但他们都没有工作
      【解决方案4】:

      写文件很容易:

      $fp = fopen('lidn.txt', 'w');
      fwrite($fp, 'Cats chase mice');
      fclose($fp);
      

      【讨论】:

        【解决方案5】:

        您可以使用更高级别的函数,例如:

        file_put_contents($filename, $content);
        

        这等同于依次调用fopen()fwrite()fclose()将数据写入文件。

        文档:file_put_contents

        【讨论】:

        • 只是一个旁注,file_put_contents() 仅适用于 PHP5。在这种情况下似乎不是问题(毕竟你的答案得到了接受),但可能仍然有一些主机运行 PHP4.x。
        • 一个非常重要的旁注:与 fopen() 相比,file_put_contents() 是一场内存噩梦。我喜欢使用它,但是在处理大文件时,您希望能够将数据“流式传输”到其中。 PHP 将需要最终文件大小的大倍数作为内部内存,因此在使用此函数时请记住这一点。对于少量数据,我推荐它,因为它易于使用。
        • 然后使用 file_put_contents($filename, $other_stream)。和使用stream_copy_to_stream-)一样,内存效率很高。
        • @Duroth 它仅适用于 PHP5 还是仅适用于 PHP5?这是两件不同的事情。
        • @Xsmael 不是在遥远的 2009 年;) PHP7 那时还不存在。但是,是的,put_file_contents() 最初是在 PHP5 中引入的,此后也包含在以后的版本中。
        【解决方案6】:

        我使用以下代码在我的 web 目录中写入文件。

        write_file.html

        <form action="file.php"method="post">
        <textarea name="code">Code goes here</textarea>
        <input type="submit"value="submit">
        </form>
        

        write_file.php

        <?php
        // strip slashes before putting the form data into target file
        $cd = stripslashes($_POST['code']);
        
        // Show the msg, if the code string is empty
        if (empty($cd))
            echo "Nothing to write";
        
        // if the code string is not empty then open the target file and put form data in it
        else
        {
            $file = fopen("demo.php", "w");
            echo fwrite($file, $cd);
        
            // show a success msg 
            echo "data successfully entered";
            fclose($file);
        }
        ?>
        

        这是一个工作脚本。如果您想在您的网站上使用它,请务必更改表单操作中的 url 和 fopen() 函数中的目标文件。

        【讨论】:

        • 我刚开始写php,但这看起来你不仅仅是在写一个文本文件,而是在你的服务器上写一个php代码文件,然后可以通过引用“demo”立即运行.php”网址。有人可以将恶意 PHP 代码写入您的服务器并立即执行,对吗?我认为这是为了让您可以测试自己的代码,但应该警告人们这种特定实现的风险。 (话虽如此,我喜欢它,我自己也会这样做)
        【解决方案7】:

        fwrite() 速度快了一点,file_put_contents() 只是这三种方法的包装,所以你会失去开销。 Article

        file_put_contents(文件、数据、模式、上下文):

        file_put_contents 将字符串写入文件。

        此函数在访问文件时遵循这些规则。如果设置了 FILE_USE_INCLUDE_PATH,请检查 filename 副本的包含路径 如果文件不存在则创建文件,如果设置了 LOCK_EX,则打开文件并锁定文件,如果设置了 FILE_APPEND,则移至文件末尾。否则,清除文件内容 将数据写入文件并关闭文件并释放所有锁。 该函数成功返回写入文件的字符编号,失败返回FALSE。

        fwrite(文件,字符串,长度):

        fwrite 写入一个打开的文件。函数将在文件末尾或达到指定长度时停止, 以先到者为准。此函数返回写入的字节数或失败时返回 FALSE。

        【讨论】:

          【解决方案8】:

          要写入PHP 中的文件,您需要执行以下步骤:

          1. 打开文件

          2. 写入文件

          3. 关闭文件

            $select = "data what we trying to store in a file";
            $file = fopen("/var/www/htdocs/folder/test.txt", "a");
            fwrite($file  , $select->__toString());
                 fclose($file );
            

          【讨论】:

            【解决方案9】:

            步骤如下:

            1. 打开文件
            2. 写入文件
            3. 关闭文件

              $select = "data what we trying to store in a file";
              $file = fopen("/var/www/htdocs/folder/test.txt", "w");        
              fwrite($file, $select->__toString());
              fclose($file);
              

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-11-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多