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()는 멀티바이트 문자열에서도 정확하게 마지막 발생 위치를 찾아주는 안정적인 함수입니다.