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