Удаление избыточных разрывов строк с помощью регулярных выражений
Я разрабатываю единый обслуживающий сайт на PHP, который просто отображает сообщения, размещенные посетителями (в идеале, связанные с темой веб-сайта). Любой желающий может отправлять до трех сообщений в час.
Поскольку веб-сайт будет состоять только из одной страницы, я хотел бы контролировать вертикальную длину каждого сообщения. Тем не менее, я хочу хотя бы частично сохранить разрывы строк в исходном сообщении. Компромиссом было бы разрешить два разрыва строки, но если их больше, чем два, затем замените их в общей сложности двумя разрывами строк подряд. Переполнение стека реализует это.
Например:
"Дикобразы\наре\н\н\н\ппоркупиней".
Будет изменено на
"Дикобразы
являются
дикобразами".
Одним из сложных аспектов проверки разрывов строк является возможность их сбора и хранения в виде \r\n, \r или \n. Я думал о преобразовании всех разрывов строк в
с помощью nl2br(), но это казалось ненужный.
Мой вопрос: Используя регулярные выражения в PHP (с такими функциями, как preg_match() и preg_replace()), как я могу проверить наличие экземпляров более чем двух разрывов строк в строке (с пробелом между ними или без него), а затем изменить их в общей сложности на два разрыва строк?
2 answers
preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)
Что-то вроде
preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text);
Должно сработать, я думаю. Хотя я точно не помню синтаксис PHP, возможно, потребуется еще немного экранирования:-/