2009-07-07 197 views
4

那么,我很高兴使用这些\ r,\ n,\ t等东西混淆。因为我看了网上(php.net),这似乎是工作,但我试试吧,这里是我的简单的代码:PHP,为什么有时候“ n或 r”有效,但有时不起作用?

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

    echo $str . $str2; 
?> 

但结果是“我的名字是顺口溜我是男孩”

要么我把\ r \ n放在var或者与echo相同的行中,结果是一样的。有人知道为什么

+0

@Jingleboy - 再看一遍,它看起来像你的“\ n \ r”,是一个错字。如果你纠正这个问题,那么问题就会变得更加明显,即问题不在于使用

标记或插入
。 – RichardOD 2009-07-07 11:45:12

回答

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非HTML格式,除非作出了明确使用<pre> - 他们只关心HTML。

+0

这是一个很好的答案,但是Jon指出\ n \ r不好。 – RichardOD 2009-07-07 11:31:06

4

那么在你的例子中,你有\n\r而不是\r\n - 这很少是一个好主意。

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

不同的操作系统使用不同的行结束符,并且HTML/XML不关心换行符,因为换行符中的换行符意思是“空格”(所以你会在单词之间得到一个空格,但是不一定是换行符)。

+1

LF是类Unix,CR + LF是Windows。 LF + CR是因为Jingleboy99有错误。 – RichardOD 2009-07-07 11:29:11

0

您是否在HTML页面中显示结果?如果是这样,HTML会剥去像换行符一样的空格。你不得不在HTML中使用'< br/>'而不是'/ r/n'。

1

您也可以使用nl2br():

echo nl2br($str . $str2); 

这个函数什么是你的字符串替换换行符到<br>。

另外,您不需要\ r,只需\ n。

1

要么使用\ n(* NIX)或\ r \ n(DOS/Windows)中,\ n \ r是非常罕见的。一旦你解决这个问题,它应该工作得很好。

当然,如果您要输出HTML,换行符不会执行任何操作,除非它在<之前> < /之前>标记。使用< br/>来分隔HTML中的行。如果需要,nl2br()函数可以帮助您将换行符转换为HTML。另外,如果您使用单引号字符串(您的示例具有双引号字符串),\ r和\ n将不起作用。单引号字符串中唯一的转义字符是\'和\。

1

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

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

  • \ r在苹果电脑
  • \ r \ n在Windows
  • \ n在Unix
相关问题