解析PHP处理换行符的问题 \r\n


Posted in PHP onJune 13, 2013

一首先说说 \r 与\n的区别
回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix系统里,每行结尾只有“<换行>”,即"\n";Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;Mac系统里,每行结尾是“<回车>”,即"\n";。一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

c语言编程时(windows系统)
\r 就是return 回到 本行行首 这就会把这一行以前的输出 覆盖掉。
如: (注以下是C++代码)
最后只显示 xixi 而 hahaha 背覆盖了

int main ()
{
cout << "hahaha" << "\r" << "xixi" ;
}

\n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉
int main()
{
cout << "hahaha" << "\n" << "xixi" ;
}

二换行符的表现形式
在普通文件里如(.txt,.php等)换行符是"\r\n", "\n", "\r"。但表现在HTML文件里时(这里说明一下:HTML的TEXTAREA文本域里的换行也是"\r"或“\n”)是“<br/>”标签。
使用PHP脚本可以进转换。
代码如下(来至PHP手册):
//Order of replacement
$str="Line1\nLine2\rLine3\r\nLine4\n";
$order=array("\r\n","\n","\r");
$replace='<br/>';
$newstr=str_replace($order,$replace,$str);
PHP 相关文章推荐
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
详解PHP中的PDO类
Jul 06 PHP
php简单生成随机数的方法
Jul 30 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP实现简单日历类编写
Aug 28 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 #PHP
基于PHPExcel的常用方法总结
Jun 13 #PHP
深入PHP FTP类的详解
Jun 13 #PHP
PHP代码审核的详细介绍
Jun 13 #PHP
PHP设计模式之调解者模式的深入解析
Jun 13 #PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 #PHP
PHP设计模式之解释器模式的深入解析
Jun 13 #PHP
You might like
一个php作的文本留言本的例子(一)
2006/10/09 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
PHP解决中文乱码
2017/04/28 PHP
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
总结Python编程中函数的使用要点
2016/03/20 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
一组SQL面试题
2016/02/15 面试题
高中军训感言500字
2014/02/24 职场文书
校园公益广告语
2014/03/13 职场文书
学生违反校规检讨书
2014/10/28 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
九华山导游词
2015/02/03 职场文书
教师党员自我评价2015
2015/03/04 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL