PHP разрыв строки в письмах - PullRequest
28 голосов
/ 08 июля 2010

У меня есть следующий код:

$message = "Good news! The item# $item_number on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\n
The seller, $bid_user is making this offer.\n
\nItem Title : $title\n

\nAll the best,\n
$bid_user\n
$email\n
";

echo $message;
$htmlContent = $baseClass->email_friend($item_number, $title, $bid_price, $bid_user, $mcat, $message, $email, $VIEWSTATE, $EVENTVALIDATION, $URL);

Проблема в том, что разрыв строки (\n) не работает.

Ответы [ 8 ]

44 голосов
/ 08 июля 2010

Попробуйте \r\n вместо \n

Разница между \ n и \ r \ n

Следует отметить, что это применимо к возвратам строк в электронных письмах. Для других сценариев, пожалуйста, обратитесь к rokjarc answer .

30 голосов
/ 28 марта 2013

Я знаю, что это старый вопрос, но в любом случае он может кому-то помочь.

Я склонен использовать PHP_EOL для этой цели (из-за кросс-платформенной совместимости).

echo "line 1".PHP_EOL."line 2".PHP_EOL;

Если вы планируете показать результат в браузере, тогда вам нужно использовать "<br>".

РЕДАКТИРОВАТЬ: , поскольку ваш точный вопрос касается электронной почты, все немного по-другому. Чистые текстовые электронные письма см. В принятом ответе Брендана Буллена . Для HTML-писем вы просто используете форматирование HTML.

19 голосов
/ 08 июля 2010

Вы строите эту строку, используя одинарные или двойные кавычки?\ r и \ n работают только с двойными кавычками, а также со встроенными переменными.Например:

$foo = 'bar';
echo 'Hello \n $foo!';

выведет:

Hello \n $foo!

Но:

$foo = 'bar';
echo "Hello \n $foo!";

выведет:

Hello
bar!
6 голосов
/ 14 сентября 2013

вы можете использовать "Line1<br>Line2"

6 голосов
/ 08 июля 2010

Если вы выводите в html или html электронную почту, вам нужно будет использовать <br> или <br /> вместо \n.

Если это просто текстовое электронное письмо: возможно, вы используете ' вместо "? Хотя тогда ваши значения тоже не будут вставлены ...

4 голосов
/ 08 июля 2010

РЕДАКТИРОВАТЬ: Может быть, ваш класс для отправки электронных писем имеет опцию для электронных писем HTML, а затем вы можете использовать

1) Двойные кавычки

$output = "Good news! The item# $item_number  on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\nThe seller, $bid_user is making this offer.\n\nItem Title : $title\n\nAll the best,\n $bid_user\n$email\n";

Если вы используете двойные кавычки, то \ n будет работать (в браузере не будет новой строки, но вы увидите исходный кодв вашем браузере - символы \ n будут заменены на новые строки)

2) Одинарные кавычки не имеют эффекта, как двойные кавычки выше:

$output = 'Good news! The item# $item_number  on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\nThe seller, $bid_user is making this offer.\n\nItem Title : $title\n\nAll the best,\n $bid_user\n$email\n';

все символы будут напечатаны как есть (даже переменные!)

3) Разрывы строк в HTML

$html_output = "Good news! The item# $item_number  on which you placed a bid of <br />$ $bid_price is now available for purchase at your bid price.<br />The seller, $bid_user is making this offer.<br /><br />Item Title : $title<br /><br />All the best,<br /> $bid_user<br />$email<br />";
  • Будут разрывы строк вВаш браузер и переменные будут заменены их содержимым.
2 голосов
/ 02 июля 2013

Когда мы вставляем любой разрыв строки с языком программирования, код символа для этого - "\ n". php выводит это, но html не может отобразить это, потому что разрыв строки htmls равен
. Самый простой способ выполнить эту работу - заменить все "\ n" на "
". поэтому код должен быть

str_replace("\n","<br/>",$str);

после добавления этого кода вам не нужно использовать предварительный тег для всех операций вывода.

скопировал этот ответ с этого сайта :

2 голосов
/ 08 июля 2010

, если вы выводите код в виде html - изменить / n ->и сделайте echo $ message;

...