Ответ 1
Попробуйте \r\n
вместо \n
Следует отметить, что это применимо к возврату строки в сообщениях электронной почты. Для других сценариев обратитесь к rokjarc answer.
У меня есть следующий код:
$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)
не работает.
Попробуйте \r\n
вместо \n
Следует отметить, что это применимо к возврату строки в сообщениях электронной почты. Для других сценариев обратитесь к rokjarc answer.
Я знаю, что это старый вопрос, но в любом случае он может помочь кому-то.
Я стараюсь использовать PHP_EOL
для этих целей (из-за кросс-платформенной совместимости).
echo "line 1".PHP_EOL."line 2".PHP_EOL;
Если вы планируете показывать результат в браузере, вы должны использовать "<br>"
.
РЕДАКТИРОВАТЬ:, поскольку ваш точный вопрос касается писем, все немного отличается. Для чистых текстовых сообщений см. Brendan Bullen принятый ответ. Для электронных писем HTML вы просто используете форматирование HTML.
Вы строите эту строку, используя одиночные или двойные кавычки? \r и\n работают только с двойными кавычками, а также с встроенными переменными. Например:
$foo = 'bar';
echo 'Hello \n $foo!';
выведет:
Hello \n $foo!
Но:
$foo = 'bar';
echo "Hello \n $foo!";
выведет:
Hello
bar!
Если вы выведете на html или html-адрес электронной почты, вам нужно будет использовать <br>
или <br />
вместо \n
.
Если это просто текстовое сообщение электронной почты: возможно, вы используете '
вместо "
? Хотя тогда ваши значения не будут вставлены и...
вы можете использовать "Line1<br>Line2"
РЕДАКТИРОВАТЬ: Возможно, ваш класс для отправки сообщений электронной почты имеет возможность для электронных писем HTML, а затем вы можете использовать < br/ >
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 />";
если вы выводите код как html - change/n →
и сделать echo $message;
Когда мы вставляем любой разрыв строки с языком программирования, код char для этого - "\n". php делает вывод, но html не может отобразить, что из-за htmls разрыв строки - это
. поэтому простой способ выполнить эту работу заменяет все "\n" на "
". поэтому код должен быть
str_replace("\n","<br/>",$str);
после добавления этого кода вам не придется использовать pre tag для всех выходных описаний.