정기적 인 표현식으로 중복 라인을 제거하는 것이 있습니다
-
03-07-2019 - |
문제
나는 개발 중입니다 단일 서빙 사이트 방문자가 게시 한 메시지를 단순히 표시하는 PHP (웹 사이트 주제를 둘러싼). 누구나 한 시간에 최대 3 개의 메시지를 게시 할 수 있습니다.
웹 사이트는 한 페이지 만 있으므로 각 메시지의 수직 길이를 제어하고 싶습니다. 그러나 나는 원래 메시지에서 적어도 부분적으로 줄 브레이크를 보존하고 싶다. 타협은 두 개의 라인 브레이크를 허용하는 것이지만, 2 개가 넘는 경우 총 2 개의 라인 브레이크로 교체하십시오. 스택 오버 플로우는 이것을 구현합니다.
예를 들어:
"Porcupines nare n n n nporcupiney."
변경됩니다
"고슴도치u003Cbr /> ~이다u003Cbr />u003Cbr /> 고슴도치. "
라인 브레이크 확인의 까다로운 측면 중 하나는 r n, r 또는 n으로 수집 및 저장 될 가능성입니다. 모든 라인 브레이크를 변환하는 것에 대해 생각했습니다u003Cbr /> s는 nl2br ()를 사용하지만 불필요하게 보였습니다.
내 질문 : PHP (preg_match () 및 preg_replace ()와 같은 함수와 함께 정규 표현식을 사용하여 두 줄 이상의 라인 브레이크 인스턴스가 연속 (빈 공간이 있거나없는 경우)을 확인한 다음 총 2 개의 라인 브레이크?
해결책
preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)
다른 팁
같은 것
preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text);
작동해야한다고 생각합니다. PHP 구문을 정확히 기억하지는 않지만 더 탈출이 필요할 수 있습니다.-/
제휴하지 않습니다 StackOverflow