【问题标题】:No line break from textarea in php mail [duplicate]php邮件中的textarea没有换行符[重复]
【发布时间】:2013-04-01 16:34:50
【问题描述】:

从代码中可以看出,用户首先输入姓名和消息,然后点击发送。 问题是文本区域。当我换行时,我收到的电子邮件中仍然没有任何换行符。

<?php
$to = "abc@xyz.com";
$subject = "Message from contact form";

//begin of HTML message
$message = <<<EOF
<html>
<body>
<b>Name:</b><br>
{$_POST['name']}
<br>
<b>Message:</b><br>
{$_POST['message']}
</body>
</html>
EOF;
//end of message

$header  = "MIME-Version: 1.0" . "\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$header .= "from:abc@xyz.com";

mail($to, $subject, $message, $header);
echo "Email sent!";
?>

<form action="sendmail.php" method="post">
Name: <br>
<input type="text" name="name" style="width: 200px;"> <br><br>

Message: <br>
<textarea name="message" style="width: 200px; height: 100px;"></textarea> <br><br>

<input type="submit" value="Send">
</form>

【问题讨论】:

  • 你可以在你的mail()调用之前添加一个var_dump($message)并粘贴输出
  • 尝试做nl2br($_POST['message'])

标签: post php


【解决方案1】:

这就是 HTML 的本意。无论您在 HTML 源代码中按了多少次 Enter,浏览器只会在有 HTML 标记告诉它这样做时才显示换行符。

您可以使用nl2br() 插入此类标签。您还想使用htmlspecialchars() 转义您的原始输入。

$name = htmlspecialchars($_POST['name']);
$message = nl2br(htmlspecialchars($_POST['message']));

//begin of HTML message
$message = <<<EOF
<html>
<body>
<b>Name:</b><br>
{$name}
<br>
<b>Message:</b><br>
{$message}
</body>
</html>
EOF;

【讨论】:

  • 你想让我把 nl2br() 标签放在哪里?
  • 有效!! - 非常感谢你:-)
【解决方案2】:

使用这个:-

echo nl2br("My name is\n user2232809");

会输出

我叫
用户2232809

此函数返回在所有换行符之前插入&lt;br /&gt; or &lt;br&gt; 的字符串。因此,当您按下回车键时,它会返回与 html 等效的 &lt;br&gt;

【讨论】:

  • 欢迎来到 Stack Overflow。您可以使用Code Sample {} 工具栏按钮格式化源代码。
  • @Alvaro 感谢您的提示:)
【解决方案3】:

在 textarea 的文本上使用 PHP 的 nl2br()....

【讨论】:

  • 你想让我把 nl2br() 标签放在哪里?
  • $tempMsg = nl2br($_POST['message']); 消息:
    {$tempMsg}
  • 对不起,我是新来的...下次会记住这一点..
猜你喜欢
  • 2017-06-13
  • 2011-05-01
  • 2017-10-21
  • 2014-02-09
  • 2013-01-19
  • 2014-06-29
  • 2019-07-04
  • 2016-08-17
  • 1970-01-01
相关资源
最近更新 更多