Предельное количество nl2br br показывает подряд? - PullRequest
3 голосов
/ 14 мая 2011

У меня проблемы с "bb parser", который я кодирую. Или, ну, не с самим парсером, а с nl2br, модифицирующим его.

Строка из базы данных выглядит следующим образом:

текст текст текст

[код] код код код [/ код]

текст текст текст

Теперь nl2br помещает один br / после первого «текстового текста», а затем еще один ниже этого, так что перед тегом [code] есть два разрыва строки (что на самом деле правильно, но не то, что я хочу).

Можно ли как-то ограничить количество бр, вводимых подряд? Кажется, я не могу найти решение, которое достаточно просто.

Заранее спасибо, ребята.

Ответы [ 3 ]

4 голосов
/ 14 мая 2011

В дополнение к предыдущему решению, я добавляю другое, так как Фредрик попросил его.Это заменит двойной <br> после nl2br вместо ранее.

$string = nl2br( $string );
$string = preg_replace( '/(<br(?: \\/)?>\\r?\\n?\\r?)(?=\\1)/is', '', $string );
0 голосов
/ 14 мая 2011

Вы можете использовать

$string = str_replace(array("\r\n\r\n", "\n\r\n\r", "\n\n", "\r\r"), array("\r\n","\n\r","\n","\r"), $string);

Это предотвращает двойные
теги.Preg_replace, как предлагалось ранее, лучше, если в строке может быть более двух новых строк.

0 голосов
/ 14 мая 2011

Например, вы можете заменить два перевода строки (или более) на один с помощью preg_replace: -)

...