PHP在电子邮件中新的换行符
我有以下代码:
$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)
不起作用。
尝试用\r\n
代替\n
\ n和\ r \ n之间的区别
应该指出的是,这适用于电子邮件中的退换货。 对于其他情况,请参阅rokjarc的答案 。
我知道这是一个古老的问题,但无论如何这可能会帮助别人。
为了这个目的,我倾向于使用PHP_EOL
(由于跨平台兼容性)。
echo "line 1".PHP_EOL."line 2".PHP_EOL;
如果您打算在浏览器中显示结果,则必须使用"<br>"
。
编辑:因为你确切的问题是关于电子邮件,事情有点不同。 对于纯文本电子邮件,请参阅Brendan Bullen 接受的答案 。 对于HTML电子邮件,您只需使用HTML格式。
你是使用单引号还是双引号构build这个string? \ r和\ n只能使用双引号以及embedded的variables。 例如:
$foo = 'bar'; echo 'Hello \n $foo!';
会输出:
Hello \n $foo!
但:
$foo = 'bar'; echo "Hello \n $foo!";
会输出:
Hello bar!
如果输出为html或html电子邮件,则需要使用<br>
或<br />
而不是\n
。
如果这只是一个文本电子邮件:你可能使用'
而不是"
?虽然然后你的价值观不会插入…
你可以使用"Line1<br>Line2"
编辑:也许你的class级发送电子邮件有一个HTML电子邮件的选项,然后你可以使用<br />
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字符将被replace为换行符)
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';
所有的字符将被打印(甚至variables!)
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 />";
- 浏览器中会出现换行符,variables将被replace为内容。
如果您输出的代码为html – 更改/ n – >
并做echo $ message;
当我们用编程语言插入任何换行符时,这个char代码就是“\ n”。 PHP确实输出,但HTML无法显示,由于htmls换行符
。 如此简单的方法来做这个工作是取代所有的“\ n”与“
“所以代码应该是
str_replace("\n","<br/>",$str);
添加这个代码后,你不必使用pre标签所有的输出oparation。
从这个网站复制了这个答案 :