php fwrite写入文件时换行符\r\n不起作用

时间:2016-09-10
今天在使用php fwrite写入文件时,需要进行换行操作,一般我们都是使用\r\n进行换行,但是在我的php代码里面没有起到任何作用,后来网上查阅资料,是因为单引号惹的祸,于是记录下来供大家参考。

php的换行符我们都知道:\n ,回车符:\r,在需要换行时,通常是用“\r\n”这个组合。但是为什么我们在使用fwrite写入文件时\n换行符不起作用呢。我们先看下面这个例子:

<?php
$filename = 'manongjc.txt';
$str= '码农教程(www.manongjc.com)欢迎你的到来!\r\n在这里你可以学习关于PHP的知识';
$fh = fopen($filename, "a"); //第二个参数a表示追加写入
echo fwrite($fh, $str);
fclose($fh);
?>

执行上面代码,并打开manongjc.txt文件查看并没有换行,回车换行符“\r\n”并没有被解析为换行符,而是直接被当作一个字符输出来了。这是为什么呢?

这时候我们就应该思考一下PHP里面单引号与双引号的作用和区别了。关于php单引号与双引号的使用及区别,大家可以查看这篇文章:《php中单引号与双引号定义字符串的区别分析》

其中最主要的区别在于:

②对变量的解析不同

单引号字符串中出现的变量不会被变量值替代。即PHP不会解析单引号中的变量,而是将变量名原样输出。双引号字符串最重要的一点是其中的变量名会被变量值替代,即可以解析双引号中包含的变量。同时单引号也不会解释\r\n换行。

所以将以上定义str变量的单引号换成双引号就可解决php fwrite写入文件时换行符\r\n不起作用。

正确代码如下:

<?php
$filename = 'manongjc.txt';
$str= "码农教程(www.manongjc.com)欢迎你的到来!\r\n在这里你可以学习关于PHP的知识";
$fh = fopen($filename, "a"); //第二个参数a表示追加写入
echo fwrite($fh, $str);
fclose($fh);
?>