PHP-代码-读取文本换行符的小问题解决方法

原创 2012年05月11日 22:06:03

先演示下效果

读取一个txt文本的时候会发现结尾会多出两个字符,是因为有换行符的存在,在windows里面换行符的表示方法为 \r\n

例如我们写入一个字符串到txt文件:

$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str);
fclose($fp1);
----------------------------------------

显示结果:

123

----------------------------------------

然后我们再测试写入两次到文件

$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str.$str);
fclose($fp1);

----------------------------------------

显示结果:

123123

----------------------------------------

这里写入的时候并非我们要的结果,我们想在写入123后要换行那么需要加入一个换行符,windows下面的换行符为: \r\n

测试代码:

$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."\r\n".$str."\r\n");
fclose($fp1);

-------------------------------------------显示结果

123

123

这里是空着的一行起始点,虽然看不到但是鼠标指针可以点这里写入字符串。

----------------------------------------

在我们处理文本文件的时候只要是换行的都有换行符!

所以我们要加以过滤后才能使用一行的字符串!

测试代码:

我们读入文件格式如:

---------------------

123

1234

--------------------

的文件

$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."\r\n".$str."\r\n");
fclose($fp1);

$f1="t1.txt";
$fp1=fopen($f1,"r");
while(!feof($fp1)){
 $buffer1=fgets($fp1);
 echo strlen($buffer1);
 echo "<br />";
 }
fclose($fp1);

------------------------

显示的结果:

5
5
0

证明了字符串123的长度是5而不是3,因为换行符的存在才导致的,那么我们在读取的基础上去掉最后两个字符即可!

代码:

$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."\r\n".$str."\r\n");
fclose($fp1);

$f1="t1.txt";
$fp1=fopen($f1,"r");
while(!feof($fp1)){
 $buffer1=fgets($fp1);
 //第一种保守的方法,先计算此时获得的字符串长度,然后截取第一个字符到倒数第二个字符截止就是我们想要的字符串了!
 $buffer1_a=substr($buffer1,0,strlen($buffer1)-2);
 //第二种方法是直接采用substr函数的特殊性,直接截取0到-2之间的字符串
 $buffer1_b=substr($buffer1,0,-2);
 }
fclose($fp1);

这样就可以正常的使用代码读取想要的字符串了

 

fgets读取文本内容的一行,如何去掉回车符

[求助] fgets读取文本内容的一行,如何去掉回车符 [复制链接]     铜牌会员 ...
  • jfkidear
  • jfkidear
  • 2012年05月03日 17:23
  • 15019

php fgets函数读取多余的空格解决

php用fgets读字符串的时候,本来遇到换行就停止读了,但是实际会在字符串后面多读点东西,我感觉是windows的换行的原因,\r\n,可能是这个原因,最后总有一个空格,导致我在使用字符串的时候总发...
  • Monster_li57
  • Monster_li57
  • 2015年09月05日 14:01
  • 1181

php读取TXT文件(带换行、缩进)

file()与file_get_contents()一样,都是读取某文件的内容。file_get_contents()输出的是整个文件(不能读取TXT里的首行缩进和换行符)。 file() 函数把整个...
  • qyyl2013
  • qyyl2013
  • 2015年04月20日 17:38
  • 2124

Python文件读写时的换行符与回车符

转载自:http://blog.csdn.net/mrknight/article/details/9717995 1. 背景知识 ASCII码中的换行符与回车符: 换行符 ...
  • wickedvalley
  • wickedvalley
  • 2016年07月21日 12:59
  • 5609

PHP删除字符串中的空格和换行符终极方法

问说网 > 文章教程 > 编程设计 > PHP删除字符串中的空格和换行符终极方法 字符串换行符文件编码网页编码隐藏字符 PHP删除字符串中的空格和换行符终极方法 问说网•2015...
  • liiuweii
  • liiuweii
  • 2016年03月21日 10:02
  • 6628

python按行读取文件 去掉换行符"\n"

转自:http://blog.csdn.net/ysdaniel/article/details/7970883 eg: [python] view plaincopy ...
  • shanliangliuxing
  • shanliangliuxing
  • 2013年12月27日 12:16
  • 2624

C语言中关于文本文件的【回车】【换行】总结

:C语言里为 \r; ASCII码为0D;符号表示为CR,Carriage Return :C语言里为 \n; ASCII码为0A;符号表示为LF,Line Feed 一、      现状 Un...
  • joyous
  • joyous
  • 2013年02月21日 15:06
  • 5967

在php的换行操作中,\n与<br/>的区别

博主我今天遇见了一个情况就是在php代码中写入\n换行操作符,以为在浏览器那里呈现的输出是换行,没想到却没有。代码和结果如下所示: $name="haha"; echo "hi,$name";...
  • Tank_in_the_street
  • Tank_in_the_street
  • 2017年03月22日 00:26
  • 1408

CSS学习(十二)-文本换行符

一、理论: 1.word-wrap: a.normal 在半角空格或连字符的地方进行换行 b.break-word 不截断英文单词换行 2.word-break: a.normal 中文到边界上的汉字...
  • bwshqh
  • bwshqh
  • 2016年03月12日 00:56
  • 1496

文本每行都应该换行吗(cat输出文件时会在末尾自动加上换行吗)

问题起源 ArchStacker遇到一个很神奇的问题:cat输出文件时会在末尾自动加上换行吗? 在IRC上收到这条消息后,我自己测试了一下发现cat不会自动加换行。后面测试编辑器时发现是VIM...
  • hoxily
  • hoxily
  • 2015年03月13日 16:16
  • 2963
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP-代码-读取文本换行符的小问题解决方法
举报原因:
原因补充:

(最多只允许输入30个字)