2012-01-03 34 views
1

我有一個<textarea>表單用於用戶註釋,並且當內容傳遞給表單郵件時,換行符被轉換爲空格。我如何保留表單用戶輸入的換行符?PHP - 表單郵件轉換換行符空格

相關PHP:

$comments = $_REQUEST['comments']; 
// This grabs the comments from the submitted form 

//... 

$to = $configEmail; 

$subject = "Website Order Received: $offer"; 

$contents = "blah blah blah..."; 
if (!empty ($comments)) { 
    $contents = $contents."\nComments: $comments\n\n"; 
} 

//... 

mail($to, $subject, $contents); 

並在窗體的HTML結束...(註釋投入的形式,如果它有錯誤提交,所以數據不會丟失)

<label>Comments/Questions</label> 
<textarea name="comments"><?php echo $comments; ?></textarea> 

如果鍵入:

line 1 
line 2 
line 3 

它仍然像如果形式與錯誤提交,所以$comments = $_REQUEST['comments'];是d無限期地保留換行符。但純文本電子郵件給我:

line 1 line 2 line 3 

我怎樣才能保持換行符?

+3

如果您使用'\ r \ n'而不是'\ n',它看起來如何。可能只是您挑剔的電子郵件客戶端。 – 2012-01-03 19:44:53

+0

我有'/ n'的任何地方都能正常工作。我的猜測是'$ comments'中的字符串沒有'/ n',因爲它的分行符會破壞電子郵件內容的其他部分。 – 2012-01-03 19:48:35

+0

你是用純文本還是html發送郵件?我理解了第一個,但到目前爲止的答案表明第二個。總之,它是\ n,不是/ n – 2012-01-03 19:51:09

回答

2

的問題是換行從textarea的未來是\n<br> .. 因此,通過<br>發送郵件之前更換\n ..在 「\ n」

$body= str_replace("[enter]", "\n",$body); 

的rember用戶雙擊quoutes。 ..

+0

其實,我認爲這是另一種方式...雖然你可能已經回答了我的問題 – 2012-01-03 19:50:04

+0

試試這個......實際上我也有同樣的問題上一年..我記得從那時起.. – 2012-01-03 19:51:09

+0

我試過'$註釋= str_replace(「[enter]」,'\ n',$ comments);'(其中「[enter]」實際上是一個換行符),我得到了'line 1 \ nline2 \ nline3' - 很安靜。 – 2012-01-03 19:58:27

1

嘗試nl2br()函數,如果它最初不工作嘗試發送消息作爲HTML電子郵件。

+1

nl2nr()更改換行到html
,所以他_needs_ html郵件給他們一個理由在那裏.. – 2012-01-03 19:49:23