PHP nl2br () основная функция - PullRequest
       3

PHP nl2br () основная функция

1 голос
/ 03 августа 2010

Может кто-нибудь, пожалуйста, помогите мне с этим почтовым скриптом.

Я просто пытаюсь отправить html-сообщение по электронной почте, и часть сообщения отправлена ​​пользователем textarea, который вставляет \ r \ n.

Я не могу использовать nl2brлюбая другая подобная функция.Код ниже не тот, который я использую, но все равно выдает ошибку.

Код:

$to  = 'example@gmail.com';

$subject = 'Test Subject';

$message_var_1 = 'test1 \r\n test2 \r\n test3';
$message = nl2br("
    <div>
    <div>$message_var_1</div>
    </div>
");

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'X-Mailer: PHP/'.phpversion() . "\r\n";

mail($to, $subject, $message, $headers);

Ответы [ 3 ]

5 голосов
/ 03 августа 2010
$message_var_1 = 'test1 \r\n test2 \r\n test3';

PHP анализирует \r и \n только в пределах ", а не в '. Так что nl2br здесь не применимо.

$message_var_1 = "test1 \r\n test2 \r\n test3";
$message = '<div>
     <div>'.nl2br($message_var_1).'</div>
</div>';

Это должно сработать.

1 голос
/ 03 августа 2010

Эта строка содержит встроенные символы новой строки, поэтому вы получите несколько нежелательных <br/> s.

$message = nl2br("
    <div>
    <div>$message_var_1</div>
    </div>
");

Вы можете:

$message = "<div>" . nl2br($message_var_1) . "</div>";

Или гораздо проще использовать тег <pre>:

<code>$message = "<pre>$message_var_1
";
0 голосов
/ 03 августа 2010

Альтернативой является использование HEREDOC.

$message = <<<OUTPUT
 <div> some text 
   <div> some more text </div>
 </div>
OUTPUT;
$message = nl2br($message);

Ручная ссылка для heredoc здесь

...