2012-01-03 2 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

'\ n \'대신 '\ r \ n'을 사용하면 어떻게 보이나요? 까다로운 귀하의 이메일 클라이언트 일 수도 있습니다. –

+0

나는'/ n'이있는 모든 곳에서 잘 작동합니다. 내 생각에'$ comments'의 문자열에는 나머지 전자 메일 내용의 줄 바꿈에 대해'/ n'이 없습니다. –

+0

일반 텍스트 또는 html로 메일을 보내시겠습니까? 나는 처음을 이해했다. 그러나 지금까지의 대답은 두 번째를 제안한다. 어쨋든, 그것은 \ n이 아니라/n이다. –

답변

2

문제는 "\ n을"에

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

Rember 사용자를 두 번 quoutes .. 텍스트 영역에서 나오는 줄 바꿈 \n하지 <br> .. 그래서 메일을 보내기 전에 <br>하여 \n을 대체 할 수 있습니다입니다. ..

+0

실제로 나는 그것이 다른 방법이라고 생각합니다 ... 내 질문에 잘 대답했을지라도 ... –

+0

시도해보십시오 ... 실제로 저는 지난번에도 같은 문제가있었습니다 .. 그 때부터 기억하십시오 .. –

+0

나는'$ 주석은 str_replace ("[enter]", "\ n", $ comments);'(여기서 "[enter]"는 실제로 줄 바꿈입니다.) 그리고'line 1 \ nline2 \ nline3'을 받았습니다 - 꽤 일한다. –

1

처음에는 작동하지 않는 경우 nl2br() 함수를 사용하여 HTML 전자 메일로 메시지를 보내 봅니다.

+1

nl2nr()은 줄 바꿈 문자를
으로 바꾸기 때문에 html 메일을 통해 그들에게 거기에 갈 이유를 줄 수 있습니다. –

관련 문제