PHP邮件中\r\n和\n\n的区别

3
我正在设置一个PHP邮件发送脚本...
在添加不同的头文件时,我遇到了电子邮件中换行符的符号(因为 < br > 标记行不通)...
所以我的问题是 \r\n 和 \n\n 之间有什么区别?
例如:
echo $var1 . " \r\n" . $var2 . "\n\n";

感谢您的帮助!
7个回答

7

\r\n是标准格式。

参考RFC 2822

邮件被分成一行行字符。一行是由一系列以回车和换行符为界定的字符组成;也就是说,回车(CR)字符(ASCII值为13)紧接着换行(LF)字符(ASCII值为10)。 (在本文档中,“回车/换行”对通常写为“CRLF”。)

另一个\n\n只是两行。

如果这是电子邮件头,则应该是

echo $var1 . " \r\n" . $var2 . "\r\n\r\n";

这里的\r\n\r\n是头部和主体之间的分隔符。它可以是HTTP或SMTP。


4
\r代表回车,\n代表换行。可以将它们想象成打字机,\r表示将纸张从左边推到右边,这样你就可以在新的一行开始输入文字,而\n则会将光标向下移动一行。传统上,Windows和基于Windows的程序都需要同时使用这两个符号,但现在大多数程序已经认识到\n在所有操作系统中都表示换行。

谢谢你的比较,非常好(但我认为在打字机上从右到左移动到行首是正确的?)。所以\r\n就是这样....另外,做\n\r会有影响吗?可能不会吧? - d-_-b
我也曾经认为是从右到左,但当我想象一下后,我意识到纸张在打字时向左移动,而当你开始新的一行时需要将其推回到右边,因为移动的是纸张而不是打字点。我不确定 \n\r 是否有效,我猜应该可以(对于需要 \r\n 的内容),但我现在没有任何测试的方法 :p - Andrew Jackman
哈哈,这就是我因为“太年轻”而不记得打字机的结果...谢谢回复! - d-_-b

2

\r\n是Windows系统中的换行符,而\n\n则代表UNIX类系统中的两个换行符。

不要将换行符与HTML中存在的换行标签混淆。换行符基本上只是在纯文本文件中看到的新行,而在浏览器中并不会显示。

请参见换行符


2

实际上,\r\n是Windows标准的单行换行符。Unix标准是一个单独的\n字符。

在大多数情况下(在电子邮件中),您可以忽略\r字符,仅使用\n进行单行换行。这也意味着\n\n表示双倍行间距。


谢谢,所以通过使用\r\n,我实际上是在Windows和Unix中写入换行符? - d-_-b
没错。但是最近的电子邮件客户端(包括Windows)也将单个 \n 字符识别为换行符。 - Benjamin Schulte
请注意,一些电子邮件服务器会拒绝包含 \n 而不是 \r\n 的电子邮件 - 理想情况下,您需要确保生成电子邮件的代码始终为每个行尾输出 \r\n。搜索“Bare LF SMTP”以获取更多信息。 - Chris

1

"\r\n" 主要用于 DOS,而在 UNIX 中则用 "\n" 表示。因此,如果您在 UNIX 中解释 "\n\n",它将等同于两个换行符。由于您提到了 PHP,所以可以安全地使用 PHP 预定义常量 PHP_EOL



0

\r 回车符将输入位置移回开头。然后 \n 跳到新的一行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接