문제

나는 개발 중입니다 단일 서빙 사이트 방문자가 게시 한 메시지를 단순히 표시하는 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 구문을 정확히 기억하지는 않지만 더 탈출이 필요할 수 있습니다.-/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top