Удаление избыточных разрывов строк с помощью регулярных выражений

Я разрабатываю один сервисный сайт на PHP, который просто отображает сообщения, которые публикуются посетителями (в идеале, окружающие тему сайта), Каждый может отправлять до трех сообщений в час.

Поскольку веб-сайт будет только одной страницей, я бы хотел контролировать вертикальную длину каждого сообщения. Тем не менее, я хочу хотя бы частично сохранить разрывы строк в исходном сообщении. Компромисс должен состоять в том, чтобы разрешить два разрыва строки, но если их больше двух, замените их в общей сложности двумя разрывами строк подряд. Qaru реализует это.

Например:

"Дикобразы\Нер\п\п\п\nporcupiney."

будет изменено на

"Дикобразы < br/" > представл ют собой < br/ " > < br/" > porcupiney."

Один сложный аспект проверки разрывов строк - это возможность их сбора и хранения как \r\n,\r или\n. Я думал о преобразовании всех разрывов строк в < br/" > s с помощью nl2br(), но это казалось ненужным.

Мой вопрос: используя регулярные выражения в PHP (с такими функциями, как preg_match() и preg_replace()), как я могу проверить наличие экземпляров более двух строк в строке (с пробелом или без пробела между ними), а затем изменить их в общей сложности на два разрыва строки?

Ответ 1

preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)

Ответ 2

Что-то вроде

preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text);

должен работать, я думаю. Хотя я точно не помню синтаксис PHP, может потребоваться еще несколько экранов: -/