以下是PHP使用内置函数file_put_contents覆盖写入文件及追加内容的方法:
定义和用法
file_put_contents() 函数把一个字符串写入文件中。
与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
语法
file_put_contents(file,data,mode,context)
参数
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode 可选。规定如何打开/写入文件。可能的值:FILE_USE_INCLUDE_PATHFILE_APPENDLOCK_EX
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 null,则忽略。
说明
参数 data 可以是数组(但不能是多维数组)。
自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
对 context 参数的支持是 PHP 5.0.0 添加的。
file_put_contents 函数最简单的写法,可以只用两个参数,一个是文件路径,一个是要写入的内容,语法如下:
file_put_contents(filepath,data)
如果文件不存在,file_put_contents 函数会自动创建文件;如果文件已存在,原有文件被覆盖重写。
1、以覆盖形式写入内容
当设置 flags 参数值不设置时,表示在已有文件内容清空后再写入新数据(覆盖原有内容):
代码如下:<?php
file_put_contents("test.txt", "This is another something.");
?>
file_put_contents() 的行为实际上等于依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
2、以追加形式写入内容
当设置 flags 参数值为 FILE_APPEND 时,表示在已有文件内容后面追加内容的方式写入新数据:
代码如下:<?php
file_put_contents("test.txt", "This is another something.", FILE_APPEND);
?>
FILE_APPEND:该参数在文件末尾以追加的方式写入数据
可选参数:FILE_APPEND:在文件末尾以追加的方式写入数据,LOCK_EX:对文件上锁
你可以利用 file_put_contents 函数创建并写入一个新文件,或者重写一个原有文件。
下面是一个使用 file_put_contents 函数的 PHP 代码示例:
$path ="C:\\blabla\\filesys\\one.txt";
$content = "one for all";
file_put_contents($path,$content);
if (file_exists($path))
{echo "ok";}
else
{echo "ng";}
?>
该 PHP 代码示例会创建一个路径为 C:\blabla\filesys\one.txt 的文件,该文件的内容是 one for all 。
一个追加数据的案例
比如我们要在上面示例的C:\blabla\filesys\one.txt 文件上追加内容,我们可以这样写:
$path ="C:\\blabla\\filesys\\one.txt";
$content = " all for one";
file_put_contents($path,$content,FILE_APPEND);
if (file_exists($path))
{echo "ok";}
else
{echo "ng";}
?>
执行该 PHP 文件之后,我们再看 C:\blabla\filesys\one.txt 文件,发现文件内容增加了,变成了:
one for all all for one
file_put_contents 函数返回写入文件的字节数 (number of bytes) ,如果出错,返回 FALSE。