Newline 문자의 표현은 운영 체제에 따라 다릅니다. 주로 다음 유형이 있습니다.
\ n : UNIX/LINUX 및 MACOS에서 사용하는 라인 브레이크 (LF).
\ r \ n : Windows에서 사용하는 라인 브레이크 (CRLF).
\ r : Old Mac (Mac OS 9 및 이전 버전)에서 사용하는 라인 브레이크 (CR).
플랫폼에서 멀티 라인 텍스트를 처리 할 때 출력이나 추가 처리시 문제를 피하기 위해 다양한 유형의 Newline 문자를 균일하게 처리해야합니다.
우리가 다른 신생을 가진 멀티 라인 텍스트를 가지고 있다고 가정하고, 모든 newlines를 \ n (unix 스타일)으로 통합하고 싶습니다. 이것은 preg_filter를 사용하여 달성 할 수 있습니다. 간단한 예는 다음과 같습니다.
<span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"Hello, World!\r\nThis is a test.\nAnother line.\rAnd one more line."</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\r\n|\r|\n/'</span></span><span>;
</span><span><span class="hljs-variable">$replacement</span></span><span> = </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_filter</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">nl2br</span></span><span>(</span><span><span class="hljs-variable">$cleaned_text</span></span><span>);
</span></span>위의 코드에서, 우리는 정규 표현식 / \ r \ n | \ r | \ n /을 정의하며, 이는 모든 최신 라인과 일치합니다. preg_filter 함수를 통해 모든 Newline 문자를 \ n 으로 바꿉니다.
preg_filter 와 preg_replace 의 가장 큰 차이점은 일반 교체가 실패 할 때 NULL을 반환하는 반면 Preg_replace는 원래 문자열을 반환한다는 것입니다. 따라서 Newlines를 다룰 때 Preg_filter는 텍스트에서 신결한 신생을 간결하게 교체하고 신자 라인이 일치하지 않으면 변경되지 않도록하는 데 특히 적합합니다.
예를 들어, 다음 코드에서는 preg_replace를 사용하여 다음을 수행합니다.
<span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
</span></span>둘 다의 효과는 동일하지만 preg_filter 의 반환 값은 정규 경기가 성공할 때 완료 된 결과 만 반환 하면 추가 판단 및 오류 처리를 피합니다.
텍스트에 여러 줄이있는 경우 신생 처리가 단순히 \ n 으로 교체하는 것 이상의 라인이 될 수 있습니다. 다음과 같은 특정 조건에 따라 텍스트 형식을 조정해야 할 수도 있습니다.
추가 라인 브레이크를 제거합니다.
특정 빈 공간을 유지하십시오.
Newline 문자의 형식을 정규화하십시오.
예를 들어, 다음 코드는 텍스트에서 여러 연속 신형을 삭제하고 하나의 Newline 만 유지하는 방법을 보여줍니다.
<span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"Hello, World!\n\n\nThis is a test.\n\nAnother line.\n\nAnd one more line."</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\n+/'</span></span><span>;
</span><span><span class="hljs-variable">$replacement</span></span><span> = </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_filter</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">nl2br</span></span><span>(</span><span><span class="hljs-variable">$cleaned_text</span></span><span>);
</span></span>이 예에서, / \ n+ / Regex는 하나 이상의 최신 라인과 일치하여 별도의 새로운 라인으로 대체합니다. 이런 식으로, 우리는 여분의 빈 줄을 지우고 텍스트를 깔끔하게 유지할 수 있습니다.
PHP에서 Preg_filter는 특히 멀티 라인 텍스트 및 Newline 문자를 다룰 때 매우 실용적인 기능입니다. 정규 표현식을 합리적으로 사용하면 표준화 라인 브레이크, 불필요한 빈 줄 제거, 특정 문자 교체 등을 포함하여 다양한 텍스트 처리를 쉽게 수행 할 수 있습니다.
preg_filter 기능을 올바르게 사용하는 방법을 이해하면 코드 효율성을 향상시킬뿐만 아니라 다른 운영 체제의 라인 파괴로 인한 문제를 피할 수 있습니다. 멀티 라인 텍스트 처리를 수행 할 때 Newline 캐릭터가 기대치를 충족하는지 여부를 확인하고 정규 표현식을 통해 올바르게 처리하여 텍스트 형식의 일관성을 확인하십시오.