2014-07-21 144 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