Как вывести переносы строк на странице
Короткий ответ
Браузер не показывает переносы строк. nl2br() добавляет перед ними тег <br>:
<?php
echo nl2br("First line\nSecond line");Результат:
First line<br />
Second lineТекст от пользователя
Сначала экранируйте текст, потом добавляйте теги — иначе экранируются и сами <br>:
<?php
$comment = "Nice <b>post</b>!\nThanks";
echo nl2br(htmlspecialchars($comment));Результат:
Nice <b>post</b>!<br />
ThanksАбзацы
Пустая строка между частями текста — признак абзаца:
<?php
$text = "First paragraph.\n\nSecond paragraph.";
foreach (preg_split('/\n{2,}/', $text) as $paragraph) {
echo '<p>', htmlspecialchars($paragraph), "</p>\n";
}Результат:
<p>First paragraph.</p>
<p>Second paragraph.</p>Функции из этого ответа
- nl2br — Вставляет тег br перед каждым переводом строки.
- htmlspecialchars — Заменяет специальные символы HTML на безопасные обозначения.
- explode — Разбивает строку на массив по разделителю.