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

PHP mb_strrpos() 함수 완벽 정리 – 문자열에서 마지막 발생 위치 찾기

PHP의 mb_strrpos() 함수는 하나의 문자열(헤이스택) 안에서 특정 문자열(니들)이 마지막으로 나타나는 위치를 찾는 데 사용됩니다. 이 함수는 strrpos()의 멀티바이트 안전(multibyte safe) 버전으로, 바이트가 아닌 문자 수 기준으로 위치를 계산하기 때문에 한글·일본어·중국어 같은 멀티바이트 문자열을 다룰 때 특히 유용합니다. 니들의 위치는 헤이스택 문자열의 시작 지점부터 계산됩니다.

문법(Syntax)

int mb_strrpos(
   $str_haystack,
   $str_needle,
   $int_offset = 0,
   $str_encoding = null
)

매개변수(Parameters)

mb_strrpos() 함수는 아래 네 가지 매개변수를 받습니다.

  • $str_haystack − 검색 대상이 되는 원본 문자열입니다. 이 문자열 안에서 니들이 마지막으로 존재하는지 확인합니다.

  • $str_needle − 헤이스택 안에서 찾고자 하는 문자열입니다.

  • $int_offset − 검색을 시작할 위치를 지정하는 오프셋 값입니다. 양수를 지정하면 해당 문자 수만큼 건너뛴 뒤 검색을 시작하고, 음수를 지정하면 문자열 끝에서부터 지정한 문자 수만큼 앞선 지점까지만 검색합니다.

  • $str_encoding − 문자 인코딩을 지정하는 매개변수입니다. 생략하면 mb_internal_encoding()으로 설정된 내부 문자 인코딩이 사용됩니다.

반환값(Return Values)

mb_strrpos()는 니들이 헤이스택 문자열에서 마지막으로 나타나는 숫자 위치를 반환합니다. 만약 니들을 찾지 못하면 false를 반환합니다.

예제 1 – 일치하지 않는 경우

<?php
   // 인코딩을 UTF-8로 설정
   mb_internal_encoding("UTF-8");

   // "Hello World" 문자열에서 "ol" 검색
   $integer = mb_strrpos("Hello World", "ol", 0);

   // 결과 출력
   var_dump($integer);
?>

출력 결과

bool(false)

참고 − 위 코드가 false를 반환한 이유는 "Hello World" 문자열 안에 "ol"이라는 부분 문자열이 존재하지 않기 때문입니다. 즉, 니들이 헤이스택과 일치하지 않으면 함수는 false를 반환합니다.

예제 2 – 일치하는 경우

<?php
   // 인코딩을 UTF-8로 설정
   mb_internal_encoding("UTF-8");

   // "Hello World" 문자열에서 "He" 검색
   $integer = mb_strrpos("Hello World", "He");

   // 결과 출력
   var_dump($integer);
?>

출력 결과

int(0)

위 예제에서 "He"는 "Hello World"의 맨 앞, 즉 0번째 위치에서 발견되므로 함수는 정수 0을 반환합니다. 이처럼 mb_strrpos()는 멀티바이트 문자열에서도 정확하게 마지막 발생 위치를 찾아주는 안정적인 함수입니다.