PHP - 如何创建换行符?

时间:2010-11-21 14:47:17

标签: php string-interpolation

在PHP中,我试图创建一个换行符:

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';

然后我在记事本中打开创建的文件,它按字面意思写下换行符:

  

1 John Doe \ r \ n 1 John Doe \ r \ n 1 John Doe \ r \ n

我尝试了\r\n的许多变体,但都没有效果。为什么换行不换成换行符?

14 个答案:

答案 0 :(得分:571)

只有double quoted strings将转义序列\r\n分别解释为“0x0D”和“0x0A”,因此您需要:

"\r\n"
另一方面,

Single quoted strings只知道转义序列\\\'

因此,除非您将单引号字符串与其他地方生成的换行符连接起来(例如,使用双引号字符串"\r\n"或使用chr function chr(0x0D).chr(0x0A)),否则唯一的另一种方法是单引号字符串中的换行符是用你的编辑器字面输入的:

$s = 'some text before the line break
some text after';

如果您需要某些特定字符序列(例如\r\n),请务必检查编辑器的换行符设置。

答案 1 :(得分:199)

对于与平台无关的行结尾,您可以使用predefined PHP_EOL constant,如:

echo $clientid, ' ', $lastname, PHP_EOL;

答案 2 :(得分:83)

" echo" PHP中的命令将输出作为原始html发送到浏览器,因此即使在双引号中,浏览器也不会将其解析为两行,因为HTML中的换行符不代表任何内容。这就是你需要使用的原因:

echo [output text]."<br>";

使用&#34; echo&#34;或者改为使用fwrite ...

fwrite([output text]."\n");

这将输出HTML换行符代替&#34; \ n&#34;。

答案 3 :(得分:32)

使用常量PHP_EOL来获得正确的角色,无论平台如何。

http://us3.php.net/manual/en/reserved.constants.php

一个简单的用法示例:

<?php
$data = 'First line' . PHP_EOL .
        'Second line' . PHP_EOL .
        'Third line';

file_put_contents("filename.txt", $data);
?>

答案 4 :(得分:19)

双引号""插值之间的字符串,意味着它们将转义字符转换为可打印字符。

单引号''之间的字符串是字面意思,这意味着它们的处理方式与键入的字符完全相同。

您可以将两者放在同一行:

echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";

输出:

$clientid $lastname
1 John Doe

答案 5 :(得分:14)

你应该用这个:

"\n"

您也可以查看PHP EOL

答案 6 :(得分:11)

实际上\r\n用于输出的html端。使用这些字符,您只需在html代码中创建一个换行符,使其更具可读性:

echo "<html>First line \r\n Second line</html>";

将输出:

<html>First line
Second line</html>

查看页面将是:

First line Second line

如果你真的是这个意思,你只需用“”引用修复单引号:

echo "\r\n";

否则,如果您要拆分文本,请在我们的示例“第一行”和“第二行”中使用html代码:<br />

First line<br />Second line

将输出:

First line
Second line

如果用以下内容替换整个脚本,它也会更具可读性。

echo "$clientid $lastname \r\n";

答案 7 :(得分:3)

出于某种原因,在PHP中询问有关换行符的每一篇文章都没有提到只需将换行符插入单引号字符串就可以完全按照您的想法运行的情况:

前1。

 echo 'foo\nbar';

示例1显然没有打印出所需的结果,但是,如果确实无法使用单引号转义换行符,则可以使用单引号:

前2。

 echo 'foo
 bar';

示例2具有完全期望的行为。不幸的是,插入的换行符取决于操作系统。这通常不是问题,因为Web浏览器/服务器将正确解释换行符,无论是\ r,\ r \ n还是\ n。

显然,如果您打算通过其他方式(通过Web浏览器和多个操作系统)分发文件,此解决方案并不理想。在这种情况下,您应该看到其他答案之一。

注意:使用功能丰富的文本编辑器,您应该能够将换行符作为二进制字符插入,该二进制字符表示与编辑文件的操作系统不同的操作系统上的换行符。如果所有其他方法都失败了,只需使用十六进制编辑器插入二进制ascii字符即可。

答案 8 :(得分:2)

使用chr(13)进行回车,使用chr(10)进行新行

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo chr (13). chr (10);

答案 9 :(得分:2)

使用PHP nl2br在文本字符串中获取换行符。

  

$ text =“Manu是一个好孩子。(回车)他可以很好地编码。

     

echo nl2br($ text);

     

<强>结果。

     

Manu是一个好孩子。

     

他可以很好地编码。

答案 10 :(得分:1)

我也在单引号和双引号中尝试了这种组合。但没有一个有效。而不是使用\n更好地在双引号中使用<br/>。像这样......

$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";

答案 11 :(得分:1)

没有任何帮助。

PHP_EOL

. "\r\n";

$NEWLINE_RE = '/(\r\n)|\r|\n/'; // take care of all possible newline-encodings in input file
$var = preg_replace($NEWLINE_RE,'', $var);

为我工作:

$admin_email_Body = $admin_mail_body .'<br>' ."\r\n";
$admin_email_Body .= 'This is line 2 <br>' ."\r\n";
$admin_email_Body .= 'This is line 3 <br>' ."\r\n";

答案 12 :(得分:0)

对于任何echo语句,我总是在双引号内使用<br>

答案 13 :(得分:0)

lines