PHP写入文件函数汇总(附带实例)
打开文件后,如果要实现修改文件的功能,那么必须对文件进行写入操作,在 PHP 中通过使用 fwrite() 函数、fputs() 函数和 file_put_contents() 函数来实现。
【实例 1】写入文件。
readme 文件原内容如下:
该函数的参数 data 可以是数组(但不能为多维数组),即 file_put_contents($filename,join('', $array))。
file_put_contents() 函数的参数及其说明如下表所示:
【实例 2】通过 file_put_contents() 函数在 readme 文件现有内容中添加一段字符串,并将这些字符串分为 3 行。
fwrite() 函数和 file_put_contents() 函数之间的区别如下:
PHP fwrite()函数
该函数的基本语法如下:int fwrite ( resource $handle , string $string [, int $length ] )fwrite() 函数把 string 参数的值写入文件指针 handle 处。如果已指定 length 参数的值,当写入了相应长度的内容或者写完 string 参数的值后,写入就会停止。
【实例 1】写入文件。
<?php $filename = 'readme'; $somecontent = "添加这些文字到文件 "; // 首先要确定文件存在并且可写入 if (is_writable($filename)) { // 在这个实例中,将使用添加模式打开 $filename,因此,文件指针将会在文件的末尾, // 即当使用 fwrite() 函数时,$somecontent 将要写入的地方 if (!$handle = fopen($filename, 'a')) { echo "不能打开文件 $filename"; exit; } // 将 $somecontent 写入已打开的文件 if (fwrite($handle, $somecontent) === FALSE) { echo "不能写入文件 $filename"; exit; } echo "成功地将 $somecontent 写入文件 $filename"; fclose($handle); } else { echo "文件 $filename 不可写入"; } ?>运行结果为:
成功地将 添加这些文字到文件 写入文件
readme 文件原内容如下:
[root@clinux html]# cat readme 1.test 2.测试文件现有内容如下:
[root@clinux html]# cat readme 1.test 2.测试文件 添加这些文字到文件 添加这些文字到文件
PHP fputs()函数
此函数是 fwrite() 函数的别名,其用法和 fwrite() 函数一样,这里不再赘述。PHP file_put_contents()函数
该函数的基本语法如下:int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )该函数将一个字符串写入文件。它和依次调用 fopen() 函数、fwrite() 函数及 fclose() 函数所实现的功能一样。
该函数的参数 data 可以是数组(但不能为多维数组),即 file_put_contents($filename,join('', $array))。
file_put_contents() 函数的参数及其说明如下表所示:
参数 | 说明 |
---|---|
filename | 要被写入数据的文件名 |
data | 要写入的数据。类型可以是 string、array 等 |
flags | 可以是 FILE_USE_INCLUDE_PATH, FILE_APPEND / LOCK_EX(获得一个独占锁定),然而在使用 FILE_USE_INCLUDE_PATH 时要特别谨慎 |
context | 一个语境资源 |
【实例 2】通过 file_put_contents() 函数在 readme 文件现有内容中添加一段字符串,并将这些字符串分为 3 行。
<?php $filename="readme"; $data="悄悄地, 我走了\r\n正如我悄悄地来\r\n我挥一挥衣袖"; $write=file_put_contents($filename,$data); if($write==false) echo “不能写入文件”.$filename; else echo "已经成功向“$filename”文件中添加内容,添加的字节数是".$write; } ?>执行代码后,运行结果为:
已经成功向readme文件中添加内容,添加的字节数是64
fwrite() 函数和 file_put_contents() 函数之间的区别如下:
- 使用 file_put_contents() 函数时,如果没有第 3 个参数,会改写原文件;
- 使用 file_put_contents() 函数时,不必先用 fopen() 函数打开文件;
- 如果要实现和 fwrite() 函数相同的功能,需要将 file_put_contents() 函数的第 3 个参数指定为 FILE_APPEND;
- file_put_contents() 函数是文件操作函数的一个包装,用于简化写文件的操作。包装与不包装的区别在于包装后的函数简单、灵活性较差,不包装的函数灵活性较强,但更复杂些。