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

Как выглядит, если вы используете '\ r \ n' вместо просто' \ n'. Может быть, просто ваш почтовый клиент, который придирчив. –

+0

В любом месте у меня есть '/ n', он отлично работает. Я предполагаю, что строка в '$ comments' не имеет'/n', поскольку ее строка прерывает то, как это делает остальная часть содержимого электронной почты. –

+0

Вы отправляете почту в виде обычного текста или html? Я понял первое, но ответы пока предлагают второй. В любом случае это \ n, not/n –

ответ

2

Проблема заключается в том, что разрывы строк, поступающие из текстового поля являются \n не <br> .. Так замените \n на <br> перед отправкой почты ..

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

Rember пользователь двойной quoutes в «\ п». ..

+0

На самом деле, я думаю, что все наоборот ... хотя вы, возможно, ответили на мой вопрос –

+0

Попробуйте это ... на самом деле у меня тоже была такая же проблема, как и в прошлом году .. помню с того времени .. –

+0

Я пробовал '$ comments = str_replace ("[enter]", '\ n', $ comments); '(где" [enter] "на самом деле является разрывом строки), и я получил' line 1 \ nline2 \ nline3' - так что didn ' t вполне работает. –

1

Попробуйте функцию nl2br(), если она изначально не работает, попробуйте отправить сообщение в виде HTML-письма.

+1

nl2nr() меняет новые строки на html
, поэтому он _needs_ html mail, чтобы дать им повод быть там .. –

Смежные вопросы