解析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在文件指定行中写入代码的方法
May 23 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
php生成短网址示例
May 05 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
php无序树实现方法
Jul 28 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 PHP
php中try catch捕获异常实例详解
Aug 06 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下过滤HTML代码的函数
2007/12/10 PHP
php session应用实例 登录验证
2009/03/16 PHP
php empty函数 使用说明
2009/08/10 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
jQuery语法总结和注意事项小结
2012/11/11 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
python实现八大排序算法(1)
2017/09/14 Python
浅谈Python处理PDF的方法
2017/11/10 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
分析Python读取文件时的路径问题
2018/02/11 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
css3发光搜索表单分享
2014/04/11 HTML / CSS
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
项目建议书格式
2014/03/12 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
纪检监察建议书
2014/05/19 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python