Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как вывести переносы строк на странице

Короткий ответ

Браузер не показывает переносы строк. 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 &lt;b&gt;post&lt;/b&gt;!<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 — Разбивает строку на массив по разделителю.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.