Двойные разрывы строк с тегом 'pre' и 'nl2br'

Я использовал nl2br функция для pre теги, но я столкнулся со странной проблемой: есть 2 переноса строк, но есть только один <br /> тег.

Например:

code in line 1<br />
code in line 2<br />

Отображается как:

code in line 1

code in line 2

вместо:

code in line 1
code in line 2

4 ответа

Обтекание текста в <pre> тег заставит его отображаться как написано: включая пробелы, табуляции и новые строки. Поэтому возврат каретки создаст новую строку И <br /> создаст вторую новую строку.

preg_replace ("/\n+/", "", $pre) или даже лучше preg_replace ("/[\n\r]+/", "", $pre)

Вам не нужно применять nl2br(), когда вы пишете его внутри предварительного блока.

У меня такая же проблема. Правильный ответ намного проще. Не используйте nl2br с пред.

nl2br добавляет <br /> в текст для HTML, но предварительный тег уже сохраняет формат текста. Вот что это значит. <pre> = предварительно отформатированный.

Да, как-то так будет работать, пока не получится.

<pre>
    preg_replace ("/[\n\r]+/", "",nl2br(file_get_contents("/crashbody.txt")))
</pre>

Но это глупо. Вы добавляете разрывы строк и удаляете их. Чтобы сохранить пробелы и разрывы строк, <pre> делай свою работу

<pre>
    file_get_contents("/crashbody.txt")
</pre>

Или еще лучше:

<div style = "white-space: pre; text-align:left;">
    file_get_contents("/crashbody.txt")
</div>
Другие вопросы по тегам