PHP电子邮件中的换行符

PHP电子邮件中的换行符,php,newline,Php,Newline,我有以下代码: $message = "Good news! The item# $item_number on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\n The seller, $bid_user is making this offer.\n \nItem Title : $title\n \nAll the best,\n $bid_user\n $

我有以下代码:

$message = "Good news! The item# $item_number on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\n
The seller, $bid_user is making this offer.\n
\nItem Title : $title\n

\nAll the best,\n
$bid_user\n
$email\n
";

echo $message;
$htmlContent = $baseClass->email_friend($item_number, $title, $bid_price, $bid_user, $mcat, $message, $email, $VIEWSTATE, $EVENTVALIDATION, $URL);

问题是新换行符(\n)不起作用。

如果输出为html或html电子邮件,则需要使用


而不是
\n


如果它只是一封文本电子邮件:您是否可能使用
而不是
?尽管这样您的值也不会被插入…

您是使用单引号还是双引号构建此字符串?\r和\n只使用双引号以及嵌入的变量。例如:

$foo = 'bar';
echo 'Hello \n $foo!';
将输出:

Hello \n $foo!
Hello
bar!
但是:

将输出:

Hello \n $foo!
Hello
bar!

编辑:也许您发送电子邮件的类有一个HTML电子邮件选项,然后您可以使用

1) 双引号

$output = "Good news! The item# $item_number  on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\nThe seller, $bid_user is making this offer.\n\nItem Title : $title\n\nAll the best,\n $bid_user\n$email\n";
如果使用双引号,则\n将起作用(浏览器中将没有换行符,但请参阅浏览器中的源代码-换行符将替换为\n字符)

2) 单引号没有上述双引号的效果:

$output = 'Good news! The item# $item_number  on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\nThe seller, $bid_user is making this offer.\n\nItem Title : $title\n\nAll the best,\n $bid_user\n$email\n';
所有字符都将按原样打印(即使是变量!)

3) HTML中的换行符

$html_output = "Good news! The item# $item_number  on which you placed a bid of <br />$ $bid_price is now available for purchase at your bid price.<br />The seller, $bid_user is making this offer.<br /><br />Item Title : $title<br /><br />All the best,<br /> $bid_user<br />$email<br />";
$html\u output=“好消息!您以
$$bid\u价格出价的物品#$item\u编号现在可以按您的出价购买。
卖家,$bid\u用户正在提供此报价。


物品标题:$Title


$bid\u用户
电子邮件
  • 浏览器中将出现换行符,变量将替换为其内容

如果以html格式输出代码-更改/n-->

并执行echo$message;

尝试用
\r\n
代替
\n


需要注意的是,这适用于电子邮件中的换行。对于其他情况,请参考rokjarc。

我知道这是一个老问题,但无论如何,它可能会帮助某些人

为此,我倾向于使用
PHP\u EOL
(由于跨平台兼容性)

如果您计划在浏览器中显示结果,则必须使用

编辑:因为你的问题是关于电子邮件的,所以情况有点不同。 有关纯文本电子邮件,请参阅Brendan Bullen的。有关HTML电子邮件
您只需使用HTML格式。

当我们使用编程语言插入任何换行符时,其字符代码为“\n”。php会输出该字符,但HTML无法显示该字符,因为htmls换行符为
。因此,简单的方法是将所有“\n”替换为“
”。因此,代码应该是

str_replace("\n","<br/>",$str);
str\u替换(“\n”、“
”、$str);
添加此代码后,您不必对所有输出运算使用pre标记



您可以使用
“Line1
Line2”

这甚至不是PHP字符串。它只是纯文本。请向我们展示更多示例代码,以及您希望如何以HTML格式输出这些代码?那么很清楚它们为什么不工作。如果您不使用
标记每个空格(\n\r\t)将被ineterpreted为一个空格,连续多个空格将被解释为一个空格。我需要将此作为文本发送到不支持HTML的消息系统。消息系统是否支持新行?如果是,如何支持?如果系统希望使用Win样式的新行,
\n
将不起作用,则需要为其添加
\r\n
您可能会看到文本用双引号引起来。请查看修改后的问题。纯文本电子邮件中的新行应始终为CRLF(“\r\n”):谢谢,如果你把它放在
标记中,换行符也会以HTML显示。@jberger所以你对它投了否决票,因为你觉得另一个答案更好?这并不意味着这个答案没有用处(否决票的定义)。我不认为
PHP\u EOL
是这里的正确解决方案-这个答案是用于输出电子邮件内容,而这些内容不会在生成行尾字符的源计算机上呈现。因此,基于该平台是不正确的。正如Chris Williams在上面指出的,RFC规定必须是
\r\n
。请尝试以下答案:@Brendanbulen问题标题是PHP换行符。这是针对电子邮件内容的。问题标题可能应该是电子邮件中的PHP换行符。请编辑您的答案,以便我可以清除我的否决票。(stackoverflow已将其锁定。)@jberger我认为你是对的。我已经更新了答案,以消除未来的任何困惑,并更新了问题标题。我已经对此进行了研究,但我认为这不是解决问题的最佳方式,因为这是一封电子邮件。这里的解释似乎有道理:@Brendanbulen:你在这里有一个正确的观点。我来到了这一页PHP中“换行符”的拱化“在寻找答案时,大多数人可能都是这样。这是一封关于电子邮件的邮件,这一事实在发布的代码中隐藏得很好。你是一个救生员。:)我想大多数人都想在浏览器中显示换行符。谢谢哇,所有这些建议中唯一可行的就是。好东西最简单也是最好的!