PHP: Как сохранить разрывы строк, используя nl2br () с очистителем HTML?

Выпуск: Когда используешьОчиститель HTML для обработки введенного пользователем содержимого разрывы строк не переводятся в<br> теги.

Рассмотрим следующий вводимый пользователем контент:

Lorem ipsum dolor sit amet.
This is another line.

<pre>.my-css-class {
    color: blue;
}
</pre>

Lorem ipsum:


Lorem
Ipsum
Dolor


Dolor sit amet,
MyName

При обработке с использованием HTML-очистителя вышеприведенное изменяется следующим образом:

Лорем ипсум долор сит амет. Это еще одна строка.

.my-css-class {
    color: blue;  
} 

Lorem ipsum:

LoremIpsumбольДолор сижу амет, MyName

Как вы видете, "Мое имя" который должен был находиться на отдельной строке пользователем, отображается вместе с предыдущей строкой.

Как исправить?

Использование PHPnl2br() функция, конечно. Однако возникают новые проблемы, независимо от того, используем ли мы его до или послеочищающий содержимое.

Вот пример использования nl2br () перед очистителем HTML:

Лорем ипсум долор сит амет.

Это еще одна строка.

.my-css-class {

    color: blue; 

} 

Lorem ipsum:

LoremIpsumболь

Долор сижу амет,

Мое имя

Что происходит, что nl2br () добавляет<br> для каждого переноса строки, поэтому даже те, в

 блок обрабатывается, а также разрывы строк после каждого тег.

Что я пробовал

Я попробовалпользовательская функция nl2br () который заменяет разрывы строк на<br> теги, а затем удаляет все<br> теги от

 блоки. Это прекрасно работает, однако проблема остается для Предметы.

Попытка того же подхода для блоки также удалят все<br> теги из дети, если мы не будем использовать более сложное регулярное выражение для удаления<br> теги внутри элементы, но снаружи элементы. Но тогда как насчет вложенных в пределах вещь? Чтобы справиться со всеми этими ситуациями, мыЯ должен иметь еще более сложное регулярное выражение!

Если это правильный подход, не могли бы вы помочь мне с регулярным выражением?Если оно'Не правильный подход, как я могу решить эту проблему? Я также открыт к альтернативам HTML-очистителю.

Другие ресурсы, которые ямы уже смотрели на:

HTMLPurifier: авто бр

http://htmlpurifier.org/phorum/read.php?2,3034

Ответы на вопрос(2)

Ваш ответ на вопрос