如何用PHP写入文件?


108

我在一个免费的支持PHP的服务器上安装了此脚本:

<html>
<body>

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


fclose($file);
?>

</body>
</html>

它创建文件lidn.txt,但为空。

如何创建文件并向其中写入内容,例如“猫追老鼠”行?

Answers:


153

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

file_put_contents($filename, $content);

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

文件:file_put_contents


3
只是一个旁注,file_put_contents()仅在PHP5中有效。在这种情况下,这似乎不是一个问题(毕竟,您的答案得到了接受者的同意),但是那里仍然有一些运行PHP4.x的主机。
迪洛斯

2
一个非常重要的旁注:与fopen()相比,file_put_contents()是内存的噩梦。我喜欢使用它,但是在处理大文件时,您希望能够将数据“流式传输”到其中。PHP将需要大量的最终文件大小作为内部存储器,因此在使用此功能时请记住这一点。对于少量数据,我建议您使用它,因为它易于使用。
约翰

1
然后使用file_put_contents($ filename,$ other_stream)。它与使用stream_copy_to_stream-)相同,这非常节省内存。
Savageman '16

@Duroth它仅适用于PHP5还是仅适用于PHP5?那是两件事。
Xsmael

2
@Xsmael不在2009年的遥远;)PHP7那时还没有出现。但是,是的,put_file_contents()它最初是在PHP5中引入的,此后也被包含在更高版本中。
杜洛斯

88

考虑fwrite()

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

您可以使用上面的代码,也可以使用file_put_contents来获取有关如何读写文件的详细信息,您可以参考techflirt.com/file-handling-in-php
Ankur Kumar Singh

@sathish像上面那样写入文件后,如何尝试在不关闭文件(fclose($fp) )的情况下读取文件,我尝试了一下$fp = fopen('lidn.txt', 'w+');$fp = fopen('lidn.txt', 'a+');但它们都
不起作用


10
$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 +'); `,但他们都
不起作用

10

写文件很容易:

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

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()函数中更改目标文件。

祝好运。


1
我刚刚开始编写php,但是看起来您不仅在编写文本文件,而且还在将php代码文件写入服务器,然后可以通过引用“ demo.php” URL来立即运行该文件。有人可以将恶意的PHP代码写入您的服务器并立即执行,对吧?我认为这样做是为了您可以测试自己的代码,但是应该警告人们这种特定实现的风险。(话虽这么说,我喜欢它,我也会喜欢它)
RufusVS

6

为了写入文件,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 );

6

步骤如下:

  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);

5

fwrite()速度更快,而且file_put_contents()只是这三种方法的包装,因此您将损失开销。 文章

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

file_put_contents一个字符串写入文件。

这个函数如下访问文件。如果FILE_USE_INCLUDE_PATH时设置这些规则,检查包括路径的副本文件名 创建文件,如果它不存在,则打开文件,并锁定该文件,如果LOCK_EX位如果FILE_APPEND是一套,移至文件末尾。否则,清除文件内容。将数据写入文件,然后关闭文件并释放所有锁。如果成功,此函数返回写入文件的字符编号;如果失败,则返回FALSE。

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

fwrite一个开放的文件。该函数将停止在文件末尾或当它达到指定的长度,以先到者为准first.This函数返回失败写入的字节或FALSE的数量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.