PHP 텍스트 처리의 경우 MB_EREGI_REPLACE () 함수는 다중 바이트 문자열 및 사례에 민감한 교체를 지원하기 때문에 UTF-8 인코딩 된 텍스트 컨텐츠를 처리하는 데 특히 적합합니다. 이 기능은 새 버전의 PHP ( MB_EREG_REPLACE () 또는 PREG_REPLACE ( )를 사용하는 것이 권장되지만 일부 프로젝트 또는 특정 환경에서 사용 시나리오가 있습니다.
이 기사는 배열과 함께 MB_EREGI_REPLACE () 함수를 사용하여 일대일, 다수 또는 다수의 텍스트 교체 전략을 구현하는 방법을 소개합니다.
mb_eregi_replace () 의 기본 구문은 다음과 같습니다.
mb_eregi_replace(string $pattern, string $replacement, string $string, string $option = "msr")
$ 패턴 : 정규 표현 패턴
$ 교체 : 콘텐츠를 교체하십시오
$ 문자열 : 대상 문자열
$ 옵션 : 일치 옵션 (생략 가능)
이러한 대체 논리를 구현하고 싶다고 가정합니다.
모든 링크를 "http : //"또는 "https : //"접두사로 대체하십시오 .
텍스트의 "테스트"및 "예"와 같은 모든 단어를 텍스트의 "예"로 바꾸십시오.
"Apple"→ "Apple", "Google"→ "Google"과 같은 여러 키워드를 교체하십시오.
배열을 사용하여 이러한 규칙을 결합하고 Array_Map () 또는 루프를 사용하여 순차적으로 교체를 수행 할 수 있습니다.
다음은 MB_EREGI_REPLACE ()를 사용하여 복잡한 텍스트 교체를 구현하는 방법을 보여주는 완전한 예입니다.
<?php
// 원본 텍스트
$text = <<<TEXT
이것은 테스트 텍스트입니다,링크를 포함하십시오:http://m66.net/page 그리고 https://m66.net/example。
게다가,일부 브랜드 단어도 포함되어 있습니다,애플처럼、Google,몇 가지 예가 있습니다。
TEXT;
// 규칙 배열을 교체하십시오:키는 모드입니다,값은 교체 내용입니다
$replace_rules = [
// 링크 매치,대체하십시오 [링크]
'(http|https)://m66\.net/[a-zA-Z0-9/_\-]+' => '[링크]',
// 테스트 또는 예제 → 예
'시험|예' => '예',
// 브랜드 교체
'사과' => 'Apple',
'Google' => 'Google'
];
// 멀티 모드 교체를 수행하십시오
foreach ($replace_rules as $pattern => $replacement) {
$text = mb_eregi_replace($pattern, $replacement, $text);
}
// 출력 처리 결과
echo nl2br($text);
这是一个예文本,링크를 포함하십시오:[링크] 그리고 [링크]。
게다가,일부 브랜드 단어도 포함되어 있습니다,좋다 Apple、Google,还有一些예内容。
성능 문제 : 많은 교체가 발생하면 MB_EREGI_REPLACE ()에 대한 루프 호출은 성능 부담을 가져올 것입니다. 일회성 교체와 병합 규칙을 병합하거나 Preg_replace () 의 배열 버전을 사용하는 것을 고려할 수 있습니다.
탈출 문자 : 정규 표현 패턴을 구축 할 때 상징 . , / 등은 올바르게 탈출해야합니다.
정기적 인 호환성 : MB_EREGI_REPLACE () 는 다중 바이트 안전이지만 Perl 호환 규칙 성을 지원하지는 않습니다. 복잡한 모드 처리에는 preg_replace ()를 사용하는 것이 좋습니다.
PHP 7.3 이후에 mb_ereg_replace ()가 포기되었으므로 권장되는 접근법은 대신 MB_EREG_REPLAET () 또는 preg_replace () (더 강력한)를 사용하는 것입니다. 예를 들어:
$text = preg_replace(array_keys($replace_rules), array_values($replace_rules), $text);
이로 인해 교체가 더 간결하고 실행이보다 효율적입니다.
교체 규칙을 배열로 추출함으로써 MB_EREGI_REPLACE ()를 사용하여 다중 규칙 배치 텍스트 교체를 신속하게 구현할 수 있습니다. 이 모델은 간단한 콘텐츠 청소, 키워드 교체, 컨텐츠 보호 및 기타 시나리오에 특히 적합합니다. 이 기능은 점차 감가 상각되지만, 효율적이고 유연한 텍스트 처리를 달성하기 위해 아이디어는 여전히 새로운 기능 또는 기타 언어로 이동할 수 있습니다.