Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP mb_eregi() 함수 완벽 정리 – 멀티바이트 대소문자 구분 없는 정규식 매칭

PHP의 mb_eregi() 함수는 멀티바이트(multibyte) 문자열을 지원하면서 대소문자를 구분하지 않고 정규 표현식 패턴을 검색하는 함수입니다. 함수 이름의 'i'는 'ignore case(대소문자 무시)'를 의미하며, 한글·일본어·중국어처럼 멀티바이트 인코딩이 필요한 문자열에서도 안정적으로 정규식 매칭을 수행할 수 있다는 점이 큰 장점입니다.

문법(Syntax)

bool mb_eregi(
   string $pattern,
   string $string,
   array &$matches = null
)

기본적인 사용 예는 다음과 같습니다.

mb_eregi("or", "Hello World");
// "Hello World" 문자열에서 "or" 패턴을
// 대소문자 구분 없이 검색합니다.

매개변수(Parameters)

mb_eregi() 함수는 다음 세 가지 매개변수를 받습니다.

  • pattern – 주어진 문자열에서 찾고자 하는 정규 표현식 패턴입니다.

  • string – 패턴을 검색할 대상이 되는 입력 문자열입니다.

  • matches – 선택적(optional) 매개변수입니다. 패턴이 문자열에서 발견되면 매칭된 부분 문자열들이 이 배열의 요소로 저장됩니다. 만약 매칭 결과가 없다면 빈 배열이 반환됩니다.

반환 값(Return Values)

이 함수는 문자열 안에 해당 패턴이 존재하는지 여부를 확인합니다. 패턴이 매칭되면 정수 1을 반환하고, 매칭되지 않으면 false를 반환합니다.

예제(Example)

<?php
   // UTF-8 인코딩 설정
   $encoding = mb_regex_encoding("UTF-8");

   // 대소문자가 다른 패턴 "OR"으로 검색해도 매칭됨
   $integer = mb_eregi("OR", "Hello World");

   // 출력
   var_dump($encoding);
   print_r($integer);
?>

실행 결과(Output)

bool(true)
1

위 예제에서 패턴은 대문자 "OR"이지만 실제 문자열에는 소문자 "or"가 포함되어 있습니다. mb_eregi()는 대소문자를 구분하지 않기 때문에 정상적으로 매칭되어 1을 반환한 것을 확인할 수 있습니다. 만약 대소문자를 엄격하게 구분해야 한다면 mb_ereg() 함수를 사용하는 것이 좋습니다.