PHP,为什么有时“\ n或\ r”可以工作,但有时候不行?

时间:2009-07-07 11:21:44

标签: php string

好吧,我很高兴使用这些\ r,\ n,\ t等东西。因为我在线阅读(php.net),它似乎有效,但我尝试了,这是我的简单代码:

<?php
    $str   = "My name is jingle \n\r";
    $str2  = "I am a boy";

    echo $str . $str2;
?>

但结果是“我的名字是叮当我是个男孩”

我将\ r \ n放在var中或与echo相同的行中,结果是相同的。谁知道为什么?

6 个答案:

答案 0 :(得分:14)

由于您要输出到浏览器,因此需要使用<br />,否则请将输出包装在<pre>标记中。

尝试:

<?php
    $str   = "My name is jingle <br />";
    $str2  = "I am a boy";

    echo $str . $str2;
?>

或者:

<?php
    $str   = "My name is jingle \n\r";
    $str2  = "I am a boy";

    echo '<pre>' .$str . $str2 . '</pre>';
?>

除非使用<pre>serve明确说明,否则浏览器不会<pre>非HTML格式化 - 他们只对HTML感兴趣。

答案 1 :(得分:4)

在您的示例中,您有\n\r而不是\r\n - 这很少是一个好主意。

你在哪里看到这个结果?在网络浏览器中?在页面源中,仍在Web浏览器中?您使用什么操作系统?所有这些都有所不同。

不同的操作系统使用不同的行终止符,而HTML / XML并不关心换行,因为源中的换行符只是“空格”(所以你会在单词之间得到一个空格,但不是必然是换行符。)

答案 2 :(得分:1)

你也可以使用nl2br():

echo nl2br($str . $str2);

此功能的作用是将字符串中的换行符替换为<br&gt;。

此外,您不需要\ n,只需\ n。

答案 3 :(得分:1)

使用 \ n (* NIX)或 \ r \ n (DOS / Windows),\ n \ r是非常罕见的。一旦你修复了它,它应该可以正常工作。

当然,如果你输出的是HTML,除非它在&lt; pre&gt;&lt; / pre&gt;里面,否则换行什么也不做。标签。使用&lt; br /&gt;分隔HTML中的行。如果需要,nl2br()功能可以帮助您将换行符转换为HTML。

另外,如果你使用单引号字符串(你的例子有双引号字符串),\ r和\ n将不起作用。单引号字符串中唯一可用的转义字符是\'和\。

答案 4 :(得分:1)

HTML中,空格,制表符,换行符和回车符都是等效的空格字符。

在文字中,历史上以下组合已用于newlines

  • \ r在Apple Macs上
  • Windows上的
  • \ r \ n
  • \ n在Unix上

答案 5 :(得分:0)

您是否在HTML页面中显示结果?如果是这样,HTML会删除像换行符一样的空格。你必须要使用'&lt; br /&gt;'而不是HTML中的'/ r / n'。