通过$ _POST处理textarea内容后保留多行
问题描述:
我创建了一个非常简单的PHP系统,使用MySQL数据库和PHP将邮件发送到邮件列表。它还没有完成,因为通过mail()函数发送的邮件马上进入大多数邮件程序的垃圾文件夹,我将来会使用PHP连接到我的SMTP服务器。尽管我想先解决一些问题。
<table border="0">
<form method="post" action="send.php">
<tr><td>Onderwerp:</td><td><input type="text" style="width:200px;" name="sub" /></td></tr>
<tr><td>Bericht:</td><td><textarea name="mes" style="width:200px; height:100px;"></textarea></td></tr>
<tr><td></td><td><input type="submit" style="width:200px;" value="Verzend" /></td></tr>
</form>
</table>
当消息在上面textarea的它提交给下面的脚本(send.php)填充:
while($row = mysql_fetch_array($result)){
$to = $row['email'];
$subject = $_POST['sub'];
$message = $_POST['mes'];
$headers = 'From: [email protected]>' . "\r\n" . 'Reply-To: [email protected]' . "\r\n" . 'X-Mailer: PHP/' . phpversion() . "\r\n" . 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to, $subject, $message, $headers);
}
当然还有上面这一些脚本连接到数据库等等,但这不是相关的。正如你所看到的,通过$ _POST接收到的消息文本被放入mail()函数中使用的变量中。
但是,当我在textarea中使用多行时,脚本中的某个位置全部转换为一个巨大的行,最终会创建一个乱七八糟的邮件。正如你们中的一些人可能看到的,我已经创建了一个标题,表示邮件的内容是HTML。这是因为我在通过$ _POST发送的文本周围放置了一个<p>
元素。我试图删除它,因为它可能是把它全部转换成一行的东西。但是这没有帮助。
当然,您可以在HTML中使用<br />
,但如果要求列表中的所有用户使用它来创建新行,那将是愚蠢的。所以:有没有办法让电子邮件中的多行保留,而不必在文本框中填写任何不同的内容?
感谢您提前回答!
答
也许YPU正在寻找在PHP nl2br功能..
$message = nl2br($_POST['mes']);
谢谢!以下也是@xdazz。我以为我曾尝试nl2br()之前,它不工作。显然我做错了,因为它现在完美了!一个很短的答案长问题... – Stijn 2012-02-06 15:29:30