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

一首先说说 \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);

(0)

相关推荐

  • PHP函数nl2br()与自定义函数nl2p()换行用法分析

    本文实例讲述了PHP函数nl2br()与自定义函数nl2p()换行用法.分享给大家供大家参考,具体如下: 使用情景 很多场合我们只是简单用textarea获取用户的长篇输入,而没有用编辑器.用户输入的换行以"\n"的方式入库,输出的时候有时候会没有换行,一大片文字直接出来了.这个时候可以根据库里的"\n"给文字换行.PHP有自带的函数nl2br(),我们也可以自定义函数nl2p(). 先来看看nl2br() 函数吧. 定义和用法 nl2br() 函数在字符串中的每个

  • php去除换行(回车换行)的三种方法

    复制代码 代码如下: <?php    //php 不同系统的换行  //不同系统之间换行的实现是不一样的  //linux 与unix中用 \n  //MAC 用 \r  //window 为了体现与linux不同 则是 \r\n  //所以在不同平台上 实现方法就不一样  //php 有三种方法来解决 //1.使用str_replace 来替换换行  $str = str_replace(array("\r\n", "\r", "\n"

  • PHP按行读取文件时删除换行符的3种方法

    PHP按行读取文件 去掉换行符"\n": 第一种: 复制代码 代码如下: $content=str_replace("\n","",$content);echo $content; 或者: 复制代码 代码如下: $content=str_replace(array("\n","\r"),"",$content); 第二种: 复制代码 代码如下: $content=preg_replace

  • PHP nl2br函数 将换行字符转成 &lt;br&gt;

    将换行字符转成 <br> . 语法 : string nl2br(string string); 返回值 : 字符串 函数种类 : 资料处理 内容说明 本函数将换行字符转换成 HTML 换行的 <br> 指令. 复制代码 代码如下: <?php $str=' 第一行 第二行 第三行 '; echo $str;// 没有替换的 echo("<br>-----------------<br>"); echo nl2br($str);//

  • PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)

    本文实例总结了PHP常用字符串操作函数.分享给大家供大家参考,具体如下: /*常用的字符串输出函数 * * echo() 输出字符串 * print() 输出一个或多个字符串 * die() 输出一条信息,并退出当前脚本 * printf() 输出格式化字符串 * sprintf() 把格式化的字符串写入到一个变量中 * */ //ucfirst //将字符串中的首字母转换为大写 $str="string"; echo ucfirst($str); echo "<hr&

  • php 字符串中的\n换行符无效、不能换行的解决方法

    例如下面的代码: 复制代码 代码如下: <?phpecho 'hello\n';echo 'world';?> 程序的中的换行符\n会直接输出,无法正确换行,解决方法是把单引号改为双引号: 复制代码 代码如下: <?phpecho "hello\n";echo "world";?> 这样就可以了!其实就是PHP的双引号和单引号的区别问题,简单个概括下双引号中的变量可以解析,单引号就是绝对的字符串. 附:PHP去除换行的三种方法代码 复制代码

  • 深入PHP nl2br()格式化输出的详解

    nl2br()函数可将字符串中的换行符转成HTML的换行符号 复制代码 代码如下: <?php $str = "最近几天一直在下雨,难过死了 ,球也打不成,鞋子也湿透了."; echo $str; echo "<br />"; echo nl2br($str); ?> 输出结果: 复制代码 代码如下: 最近几天一直在下雨,难过死了,球也打不成,鞋子也湿透了.最近几天一直在下雨,难过死了,球也打不成,鞋子也湿透了. 附:深入探讨"&l

  • php中将html中的br换行符转换为文本输入中的换行符

    下面这几个方法将能够帮你解决这个问题. PHP版将html中的<br />换行符转换为文本框中的换行符: 复制代码 代码如下: function br2nl($text){    return preg_replace('/<br\\s*?\/??>/i','',$text);} 或者: 复制代码 代码如下: function br2nl($text){    $text=preg_replace('/<br\\s*?\/??>/i',chr(13),$text); r

  • php代码中使用换行及(\n或\r\n和br)的应用

    代码a: 复制代码 代码如下: <?php echo'hello</br>'; echo'world!'; ?> output: helllo world! 代码b: 复制代码 代码如下: <?php echo'hello\n';//unix系统使用\n:windows系统下\r\n echo'world!'; ?> output: helloworld! 分析:浏览器识别不了\n或\r\n,这两个换行符是文本换行符,文本文件有效:在网页中查看HTML源代码可以发现代码

  • php去除换行符的方法小结(PHP_EOL变量的使用)

    一个小小的换行,其实在不同的平台有着不同的实现,为什么要这样,可以是世界是多样的.本来在unix世界换行就用/n来代替,但是windows为了体现他的不同,就用/r/n,更有意思的是在mac中用/r.因此unix系列用 /n,windows系列用 /r/n,mac用 /r,这样就用你写的程序在不同的平台上运行有着不少的麻烦.下面是PHP去除换行符的一些常见方法. 第一种写法: 复制代码 代码如下: $content=str_replace("\n","",$cont

  • PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br

    nl2br()定义和用法 nl2br() 函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />). 语法 nl2br(string)参数 描述 string 必需.规定要检查的字符串. 例子 复制代码 代码如下: <?php echo nl2br("One line.\nAnother line."); ?> 输出: One line. Another line.HTML 代码: One line.<br /> Anothe

随机推荐