PHP file_put_contents() 函数是一次性向文件写入字符串或追加字符串内容的最合适选择。
file_put_contents()
file_put_contents() 函数用于把字符串写入文件,成功返回写入到文件内数据的字节数,失败则返回 FALSE。
语法:
int file_put_contents ( string filename, string data [, int flags [, resource context]] )
参数 | 说明 |
---|---|
filename | 要写入数据的文件名 |
data | 要写入的数据。类型可以是 string,array(但不能为多维数组),或者是 stream 资源 |
flags | 可选,规定如何打开/写入文件。可能的值:
|
context | 可选,Context是一组选项,可以通过它修改文本属性 |
例子:
<?php echo file_put_contents("test.txt", "This is something."); ?>
运行该例子,浏览器输出:
18
而 test.txt 文件(与程序同目录下)内容则为:This is something.。
提示
- 如果文件不存在,则创建文件,相当于fopen()函数行为。
- 如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免(见下)。
- 本函数可安全用于二进制对象。
以追加形式写入内容
当设置 flags 参数值为 FILE_APPEND 时,表示在已有文件内容后面追加内容的方式写入新数据:
<?php file_put_contents("test.txt", "This is another something.", FILE_APPEND); ?>
执行程序后,test.txt 文件内容变为:This is something.This is another something.
file_put_contents() 的行为实际上等于依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
//日志记录
private function logger($log_content)
{
if(isset($_SERVER['HTTP_APPNAME'])){ //SAE
//sae_set_display_errors(false);
//sae_debug($log_content);
//sae_set_display_errors(true);
}else if($_SERVER['REMOTE_ADDR'] == "127.0.0.1"){ //LOCAL本地
$max_size = 1000000;
$log_filename = "log.xml";
if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}
file_put_contents($log_filename, date('Y-m-d H:i:s')." ".$log_content."\r\n", FILE_APPEND);
}
}