PHP 7.0 이후에서 MB_EREGI_REPLACE ()는 공식적으로 더 이상 사용되지 않았으며 PHP 7.1 이후에 완전히 제거되었습니다. 이것은 다중 바이트 문자열의 정기적 인 교체에 의존하는 많은 개발자들을 괴롭 혔습니다. 특히 유니 코드 문자열 (예 : 중국어, 일본어 등)의 사례에 민감한 대체가 필요할 때 특히 동등하고 강력한 대안을 찾는 것이 특히 중요합니다.
다행스럽게도 PHP의 preg_replace () 함수는 올바른 수정 자 및 유니 코드 지원과 결합하여 MB_EREGI_REPLACE () 보다 훨씬 더 구현할 수 있습니다. 이 기사는 점차 MB_EREGI_REPLACE ( )를 preg_replace ()로 완벽하게 대체하고 강력한 유니 코드 정규 일치하는 방법을 점차적으로 소개합니다.
MB_EREGI_REPLACE () 는 MPSTRING (Multibyte String)에서 사례에 민감한 일반 대체 기능입니다. 그러나 문제는 다음과 같습니다.
구문은 오래되었으며 Perl 스타일 규칙을 지원하지 않습니다.
성능 저하.
최신 유니 코드, 제한된 처리 용량 및 높은 유지 보수 비용.
따라서보다 현대적이고 기능이 풍부한 preg_replace ()를 사용하는 것이 좋습니다.
우리가 사용했다고 가정합니다.
mb_eregi_replace("시험", "바꾸다", $text);
우리는 다음과 같이 다시 쓸 수 있습니다.
preg_replace("/시험/ui", "바꾸다", $text);
여기서 U 수정자는 유니 코드 모드를 켜는 것을 의미 하며 상단 및 소문자를 무시하는 것을 의미합니다.
우리가 텍스트 단락에서 모든 "사과"를 "바나나"로 교체하고 싶다고 가정 해 봅시다.
$text = "내가 가장 좋아하는 사과,그리고 사과 주스。";
$result = preg_replace("/사과/ui", "바나나", $text);
echo $result;
산출:
我最喜欢吃바나나,还有바나나汁。
URL에서 유니 코드 매개 변수를 교체하는 것을 고려하십시오 (예 : 중국 태그).
$url = "https://m66.net/search?q=사과手机";
$replaced = preg_replace("/사과/ui", "바나나", $url);
echo $replaced;
산출:
https://m66.net/search?q=바나나手机
보시다시피, preg_replace ()는 유니 코드를 포함하는 URL을 처리 할 수도 있습니다.
"Apple Phone", "Apple Computer", "Apple Pie"등과 같은 더 많은 변형을 일치 시키려면 더 복잡한 정규 표현식을 사용할 수 있습니다.
$text = "我有一台사과컴퓨터,也吃了사과그룹。";
$pattern = "/사과(컴퓨터|그룹)?/ui";
$replacement = "바나나";
$result = preg_replace($pattern, $replacement, $text);
echo $result;
산출:
我有一台바나나,也吃了바나나。
Unicode 모드를 활성화하려면 항상 U 수정자를 추가해야합니다.
preg_replace ()는 보다 복잡한 일반 구문 (예 : 어설 션, 이름 그룹 등)을 지원하며 mb_eregi_replace () 보다 유연합니다.
대체 콘텐츠에 BackSlash ( \ ) 또는 Dollar Sign ( $ )이 포함 된 경우 Preg_Quote () 또는 이중 인용구에서 탈출 프로세스를 사용하십시오.
더 이상 사용되지 않은 MB_EREGI_REPLACE ()는 불편할 수 있지만 preg_replace ()는 완벽한 대안 일뿐 만 아니라보다 강력한 유니 코드 정규 지원을 제공합니다. U 및 I 수정 자 사용을 마스터하는 한 멀티 바이트 문자 교체 요구 사항을 쉽게 처리 할 수 있습니다.
보다 복잡한 유니 코드 패턴 매칭을 처리 해야하는 경우 PHP 정규 세계에서 더 많은 가능성을 잠금 해제하기 위해 PCRE 정규 표현식의 구문 및 기능에 대해 자세히 알아볼 수 있습니다.