2014-07-21 104 views
0

因为我的电子邮件形式,我真的很恼火。我有一个表单,访问者提交他们的问题。提交信息后等将首先存储在数据库中。当存储成功时,电子邮件将发送到我的电子邮件地址。替换换行符不起作用

很好,除了消息部分。它继续显示\ r \ n(这些换行符也存储在数据库中),而我试图str_replaced()与\ r \ n与
甚至ntblr()它。什么都没有我做错了什么?

获取消息的内容:mysqli_real_escape_string

电子邮件代码:

if (!$stmt) { 
     echo "sendingEmailError"; 
    } else { 

     //Send email 
     $to = "<[email protected]>";   
     $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"; 

    } 

\r\n应替换的安全()函数

$message = safe($mysqli,$_POST['message']); 

<br />

+0

你是否确定**你的文本包含换行符和回车符,或者这些字符是否被破坏,现在是'''''','n','''''和'r'文字,例如作为回车符/换行符的'\ r \ n'为2个字节,'\ r \ n'为文字字符反斜杠,'r'和'n'为4个字节。无论如何,你不应该建立你自己的哑剧电子邮件。使用PHPMailer或Swiftmailer,这两者都可以使发送的html电子邮件变得微不足道。 –

+0

您可以使用PHP_EOL而不是\ r \ n – user986959

+0

在这种情况下PHP_EOL是错误的,因为它可能是操作系统特定的,而'\ r \ n'在这里有一个独立的操作系统。 – ToBe

回答

0

您的mysqli_real_escape_string更改了您的换行符,通常是通过转义它们。之后,你的nl2br将不再有任何打击。

尝试使用原始邮件并在其上应用nl2br。

+0

我觉得自己像个白痴。你是绝对正确的。现在作为一种魅力:') – user3856082

-1

你试过RegEX吗?

$message = preg_replace("/(\\n|\\r)+/ui", '<br />', $message); 

此外,检查从mysql表中的数据,并在自己逃到一个的stripslashes