Php 替换换行符不起作用
因为我的电子邮件表格,我真的很生气。我有一张访客提交问题的表格。提交消息后,消息等将首先存储在数据库中。存储成功后,将向我的电子邮件地址发送一封电子邮件 这很顺利,除了消息部分。它一直显示(这些换行符也存储在db中),而我试图用Php 替换换行符不起作用,php,forms,email,html-email,Php,Forms,Email,Html Email,因为我的电子邮件表格,我真的很生气。我有一张访客提交问题的表格。提交消息后,消息等将首先存储在数据库中。存储成功后,将向我的电子邮件地址发送一封电子邮件 这很顺利,除了消息部分。它一直显示(这些换行符也存储在db中),而我试图用甚至ntblr()替换它。什么都不管用。我到底做错了什么 获取消息内容: $message = safe($mysqli,$_POST['message']); if (!$stmt) { echo "sendingEmailError";
甚至ntblr()替换它。什么都不管用。我到底做错了什么 获取消息内容:
$message = safe($mysqli,$_POST['message']);
if (!$stmt) {
echo "sendingEmailError";
} else {
//Send email
$to = "<my@email.com>";
$subject = "Website message from ".$account."";
$body = "
<div> ".nl2br($message)." </div>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: New email from '.$account.' <'.$email.'>' . "\r\n";
mail($to, $subject, $body, $headers);
echo "sendingEmailSuccess";
}
safe()函数是:mysqli\u real\u escape\u string
电子邮件代码:
$message = safe($mysqli,$_POST['message']);
if (!$stmt) {
echo "sendingEmailError";
} else {
//Send email
$to = "<my@email.com>";
$subject = "Website message from ".$account."";
$body = "
<div> ".nl2br($message)." </div>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: New email from '.$account.' <'.$email.'>' . "\r\n";
mail($to, $subject, $body, $headers);
echo "sendingEmailSuccess";
}
if(!$stmt){
回显“发送电子邮件错误”;
}否则{
//发送电子邮件
$to=“”;
$subject=“来自“$account.”的网站消息;
$body=”
“.nl2br($message)。”;
$headers='MIME版本:1.0'。“\r\n”;
$headers.=“内容类型:text/html;字符集=iso-8859-1”。“\r\n”;
$headers.=“发件人:来自“$account”的新电子邮件。”“\r\n”;
邮件($to、$subject、$body、$headers);
回显“发送电子邮件成功”;
}
\r\n
应替换为
您的mysqli\u real\u escape\u字符串通常通过转义来更改换行符。在此之后,你的nl2br将不再命中任何东西
尝试使用原始消息并对其应用nl2br。您是否尝试过正则表达式
$message = preg_replace("/(\\n|\\r)+/ui", '<br />', $message);
$message=preg\u replace(“/(\\n |\\r)+/ui,”
,$message);
另外,检查mysql表中的数据,并将其转义到一个条斜杠您确定您的文本包含换行符和回车符,还是这些字符不知何故被损坏,现在是
\
,n
,\
和r
文本,例如,\r\n
作为回车符/换行符是2个字节,\r\n
作为反斜杠的文字字符,r
,n
是4个字节。在任何情况下,你都不应该建立自己的mime电子邮件。使用PHPMailer或Swiftmailer,两者都使发送html电子邮件变得微不足道。在这种情况下,您可以使用PHP_EOL而不是\r\nPHP_EOL,因为它可能是特定于操作系统的,而\r\n
在这里有一个特殊的操作系统独立的含义。除了@MarcB所说的,还可以执行var_dump($body)
并发布结果。@user986959:无意义。PHP_EOL是本地机器的EOL字符。如果服务器是Unix机器,则PHP\u EOL是\n
,与Windows机器提交的\r\n
不匹配。我觉得自己像个白痴。你完全正确。现在可以作为符咒使用:')