#一次性#向文件#写入#字符串或#追加#字符串最合适 PHP file_put_contents()

PHP file_put_contents() 函数是一次性向文件写入字符串或追加字符串内容的最合适选择。
file_put_contents()

file_put_contents() 函数用于把字符串写入文件,成功返回写入到文件内数据的字节数,失败则返回 FALSE。

1. 语法:

int file_put_contents ( string filename, string data [, int flags [, resource context]] )
-------------------------------------------------------------------------------------------
参数说明:   参数              说明
            filename     要写入数据的文件名
             data         要写入的数据。类型可以是 string,array(但不能为多维数组),或者是 stream 资源
             flags         可选,规定如何打开/写入文件。
            context     可选,Context是一组选项,可以通过它修改文本属性
            --------------------------------------------------------------
            其中,flags的值可为:
            FILE_USE_INCLUDE_PATH:检查 filename 副本的内置路径
            FILE_APPEND:在文件末尾以追加的方式写入数据
            LOCK_EX:对文件上锁
--------------------------------------------------------------------------------------------

2. 例子:

<?php
    echo file_put_contents("test.txt", "This is something.");
?>
运行该例子,浏览器输出:
18
而 test.txt 文件(与程序同目录下)内容则为:This is something.。

3. 提示:

    如果文件不存在,则创建文件,相当于fopen()函数行为。
    如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免(见下)。
    本函数可安全用于二进制对象。

4. 与fwrite的比较:

如下为file_put_contents的实例代码:
    <?php
        $filename = 'test.txt';
        $word = "你好!\r\nwebkaka";  //双引号会换行 单引号不换行
        file_put_contents($filename, $word);
    ?>
同样的功能使用fwrite的实例代码:
    <?php
        $filename = 'file.txt';
        $word = "你好!\r\nwebkaka";  //双引号会换行  单引号不换行
        $fh = fopen($filename, "w"); //w从开头写入 a追加写入
        echo fwrite($fh, $word);
        fclose($fh);
    ?>
从以上两个例子看出,其实file_put_contents是fopen、fwrite、fclose三合一的简化写法,这对程序代码的优化是有好处的,一方面在代码量上有所减少,另一方面不会出现fclose漏写的不严密代码,在调试、维护上方便很多。

5. 追加与锁定

上述例子里,file_put_contents是从头写入,如果要追加写入,怎么办呢?

在file_put_contents的语法里,有个参数FILE_APPEND,这是追加写入的声明。实例代码如下:
    <?php
        echo file_put_contents('file.txt', "This is another something.", FILE_APPEND);
    ?>
FILE_APPEND就是追加写入的声明。在追加写入时,为了避免其他人同时操作,往往需要锁定文件,这时需要加多一个LOCK_EX的声明,写法如下:
    <?php
        echo file_put_contents('file.txt', "This is another something.", FILE_APPEND|LOCK_EX);
    ?>
注意,以上代码中echo输出到显示器里的是写入文件字符串的长度。

6. 常见问题:

Warning: fopen(file.txt) [function.fopen]: failed to open stream: Permission denied
当写入文件时,有时会遇到上述问题,这是因为文件没有写权限的原因。为了避免这个错误的出现,在写入文件时需要判断下文件是否可写,这需要用到is_writable()这个函数。实例代码如下:
    <?php
        $filename = 'file.txt';
        if ( is_writable( $filename ) ) {
            echo file_put_contents( $filename, "This is another something.", FILE_APPEND );
        } else {
            echo "文件 $filename 不可写";
        }
    ?> 


文章参考来源:http://www.thinkphp.cn/topic/12631.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值