Почему текст PHP echo'd теряет форматирование?

Любые идеи, почему отформатированный текст из БД, когда эхо-аут в php теряет свое форматирование, т.е. нет новых строк? Благодаря!

введите описание изображения здесь

Solutions Collecting From Web of "Почему текст PHP echo'd теряет форматирование?"

Используйте nl2br() .

Браузер игнорирует новые строки. Вот почему вы видите весь текст без разрывов строк. nl2br () преобразует новые строки в теги <br /> , которые отображаются в виде новых строк в браузерах.

Если вы хотите отобразить текст в <textarea> , вам не нужно преобразовывать все новые строки в <br /> . В любом случае, если вы это сделаете … вы увидите « <br /> » как текст в новых строках.

Поскольку для форматирования нет html-тегов! Попробуйте функцию nl2br .

Вы можете попробовать добавить nl2br()

что-то вроде этого: echo nl2br($your_text_variable);

Он должен работать 😉

Причина

Это поведение по умолчанию для всех пользовательских агентов. Если вы посмотрите на источник страницы, вы увидите, что ваш текст имеет то же форматирование, что и в базе данных (или в текстовом поле).

Причина вашего замешательства, вероятно, в том, что вы когда-то видели текст в <textarea> , который отображает предварительно отформатированный текст, не интерпретирует теги, а в другом случае текст интерпретируется (в этом случае пробелы не важны).

В браузерах не отображаются новые строки, если они специально не заданы – используя тег или теги уровня блока.

Нет тегов == нет новых строк.

Исправить

Если вы сохраняете предварительно отформатированный текст в базе данных,
вы должны обернуть вывод в <pre> .

Вы можете конвертировать символы форматирования в теги HTML, которые вам нужны, с помощью набора функций, таких как nl2br , str_replace и т. Д.

Вы также можете исправить свою структуру, чтобы хранить HTML в базе данных, а не просто текст (однако разметка выглядит как лучшее решение).

См. Аналогичный вопрос:

  • Как сохранить форматирование пробелов с помощью PHP / HTML?

Разница между двумя отображаемыми вами изображениями заключается в том, что у одного есть текст в <textarea></textarea> а другой нет … если вы хотите 1: 1: <textarea><?php echo $yourVariable;?></textarea>

Он выводит то, что вы говорите для вывода. Если текст предварительно отформатирован, поместите его в <pre></pre> HTML <pre></pre> в свой выходной скрипт.