【发布时间】:2012-01-03 19:40:27
【问题描述】:
我在用户 cmets 的表单中有一个<textarea>,当内容传递给表单邮件时,换行符被转换为空格。如何保留表单用户输入的换行符?
相关php:
$comments = $_REQUEST['comments'];
// This grabs the comments from the submitted form
//...
$to = $configEmail;
$subject = "Website Order Received: $offer";
$contents = "blah blah blah...";
if (!empty ($comments)) {
$contents = $contents."\nComments: $comments\n\n";
}
//...
mail($to, $subject, $contents);
并且在表单的 HTML 末尾...(如果提交错误,则将 cmets 放入表单中,因此数据不会丢失)
<label>Comments / Questions</label>
<textarea name="comments"><?php echo $comments; ?></textarea>
如果我输入:
line 1
line 2
line 3
如果表单提交时出现错误,情况仍然如此,因此$comments = $_REQUEST['comments']; 肯定会保留换行符。但是纯文本电子邮件给了我:
line 1 line 2 line 3
如何保留换行符?
【问题讨论】:
-
如果您使用
\r\n而不是仅仅使用\n,它会是什么样子。可能只是您挑剔的电子邮件客户端。 -
我有
/n的任何地方都可以正常工作。我的猜测是$comments中的字符串没有/n,因为它的行破坏了其余电子邮件内容的方式。 -
您是用纯文本还是 html 发送邮件?我理解第一个,但到目前为止的答案建议第二个..无论如何,它是\n,而不是/n
-
它是纯文本,不是 HTML。你是对的,它是
\n。 -
我曾经遇到过这个问题。做一件事,在发送之前,将所有
\ns 替换为\n\r。我不知道这是不是正确的答案,但值得一试。
标签: php html forms line-breaks