현재 위치: > 최신 기사 목록> PHP 7.3+에서는 MB_EREGI_REPLAPE가 더 이상 사용되지 않는 것으로 잘못 생각됩니다.

PHP 7.3+에서는 MB_EREGI_REPLAPE가 더 이상 사용되지 않는 것으로 잘못 생각됩니다.

M66 2025-06-05

문자열 처리에 PHP를 사용할 때 MB_EREGI_REPLACE 기능은 공통 도구 중 하나였습니다. 이 기능은 중국어와 같은 다중 바이트 문자를 포함하는 텍스트를 처리하는 데 매우 적합한 다중 바이트 문자열의 정기적 인 사례 감수성 교체를 구현할 수 있습니다. 그러나 PHP 7.3+ 환경에서는 갑자기 코드에서 MB_EREGI_REPLACE를 사용하면 경고 나 오류가 발생할 수 있음을 발견했습니다. 나는이 기능이 더 이상 사용되지 않았다고 생각했지만 나중에 나는 그것을 깊이 연구하고 진실이 사실이 아니라는 것을 알았습니다.


mb_eregi_replace 란 무엇입니까?

간단히 말해서 MB_EREGI_REPLACE은 MBString 확장에서 제공하는 기능으로, 멀티 바이트 문자열에서 정규 표현식의 검색 교체를 수행하며 대소 문자를 사용하지 않습니다.

 <?php
$original = "Hello World! hello world!";
$result = mb_eregi_replace("hello", "hi", $original);
echo $result; // 산출:hi World! hi world!
?>

이 기능의 기능은 특히 케이스 일치가 필요한 경우 다중 바이트 스트링 처리에서 매우 유용합니다.


MB_EREGI_REPLACE이 PHP 7.3+에서 더 이상 사용되지 않는다고 생각하는 이유는 무엇입니까?

PHP 7.3 이상에서 MB_EREGI_REPLACE는 다음과 유사한 경고를 자극합니다.

 Deprecated: mb_eregi_replace(): This function is deprecated

이로 인해 많은 개발자들 (나 포함)은 PHP 관계자 가이 기능을 사용하지 않았다고 잘못 믿게되었습니다. 그래서 우리는 수동 소문자와 함께 mb_ereg_replace를 사용하거나 preg_replace를 대신 사용하는 것과 같은 다른 대안을 사용하려고 시도했습니다.


진실 : MB_EREGI_REPLACE 는 완전히 포기되지 않았지만 기본 구성 요소에 의존합니다.

실제로, PHP 7.3에서 시작하여 MB_EREGI_REPLACE 에 의존하는 기본 일반 엔진이 변경되었습니다. PHP 공무원은 정기 엔진을 MBregex 에서 PCRE (PERL 호환 정규 표현식)로 마이그레이션했으며 MB_EREGI_REPLACE 기능 자체는 MBREGEX를 기반으로 구현하여 내부 메커니즘이 감가 상각 된 것으로 표시되지만 기능은 여전히 ​​존재합니다.

즉, 다음과 같습니다.

  • 이 기능은 완전히 제거되지 않았으며 공식적으로 "미래에 포기 될 수있다"고 공식적으로 표시되어 개발자가 점진적인 전환을하도록 상기시켜줍니다.

  • 이것은 또한 일부 PHP 버전으로 사용할 수있는 이유를 설명하지만 경고를 제공합니다.

  • 기본 MBregex 일반 라이브러리의 유지 보수 상태는 악화되고 더 이상 권장되지 않습니다.


권장 대안

mb_eregi_replace는 포기의 위험이 있으므로 다음 대안을 사용하는 것이 좋습니다.

ui 수정 자와 함께 preg_replace를 사용하십시오

 <?php
$original = "Hello 세계! hello 세계!";
$pattern = "/hello/u";   // u 수정자는 멀티 바이트를 지원합니다,i 수정자는 대소 문자를 사용하지 않습니다
$result = preg_replace($pattern . "i", "hi", $original);
echo $result; // 산출:hi 세계! hi 세계!
?>

여기서 요점은 다음과 같습니다.

  • U 수정자는 정규 표현식이 UTF-8 멀티 바이트로 처리되도록합니다.

  • I 수정 자 구현은 사례를 무시합니다.

  • preg_replace는 PHP가 공식적으로 권장하는 현대적인 일반 대체 기능입니다.

MB_STR_IREPLAPE 사용 (PHP 8.0+ 지원)

PHP 8.0은 MB_STR_IREPLACE을 추가했으며, 이는 다중 바이트 케이스 감수성 문자열 교체 기능입니다. 구문은 간단합니다.

 <?php
$original = "Hello 세계! hello 세계!";
$result = mb_str_ireplace("hello", "hi", $original);
echo $result; // 산출:hi 세계! hi 세계!
?>

프로젝트 런타임 환경이 PHP 8.0 이상을 지원하는 경우 가장 쉬운 대안입니다.


요약

  • MB_EREGI_REPLACE 는 실제로 PHP 7.3+에서 더 이상 사용되지 않지만 완전히 제거되지는 않습니다.

  • 이 포기는 기능을 직접 제거하기보다는 기본 일반 엔진 스위칭에서 비롯됩니다.

  • 대신 ui 수정 자와 함께 preg_replace를 사용하는 것이 좋습니다.

  • PHP 8.0 이상으로 업그레이드 할 수있는 경우 MB_STR_IREPLAPE를 사용하여 교체 할 수 있습니다.

  • 앞으로 PHP 버전은 MB_EREGI_REPLACE를 완전히 제거 할 수 있으며 코드가 더 오래 걸리면 좋습니다.

이 기사가 MB_EREGI_REPLACE 의 현재 상황을 명확히하고 오래된 기능에 대해 맹목적으로 걱정하고 사용하지 않으며 코드의 현대성과 안정성을 유지하는 데 도움이되기를 바랍니다.