PHP의 mb_stristr() 함수는 하나의 문자열 안에서 특정 문자열이 처음 나타나는 위치를 검색하는 데 사용되며, 대소문자를 구분하지 않습니다. 이 함수는 검색 대상 문자열(헤이스택)에서 찾을 문자열(니들)이 처음 등장하는 지점을 기준으로 헤이스택의 일부를 반환하며, 니들을 찾지 못하면 false를 반환합니다.
문법
string mb_stristr( $str_haystack, $str_needle, $bool_before_needle = false, $str_encoding = null )
매개변수
mb_stristr() 함수는 다음 네 가지 매개변수를 받습니다.
$str_haystack − 검색 대상이 되는 전체 문자열로, 이 문자열에서 니들의 첫 번째 등장 위치를 찾습니다.
$str_needle − 헤이스택 문자열 내에서 찾고자 하는 문자열입니다.
$bool_before_needle − 헤이스택 중 어느 부분을 반환할지 결정하는 매개변수입니다.
true로 설정하면 문자열 시작부터 니들이 처음 나타나는 위치까지의 부분을 반환하며, 이때 니들은 결과에서 제외됩니다.
false(기본값)로 설정하면 니들이 처음 나타나는 위치부터 문자열 끝까지의 부분을 반환하며, 이때 니들은 결과에 포함됩니다.
$str_encoding − 사용할 문자 인코딩 이름을 지정하는 매개변수입니다. 생략하면 PHP의 내부 문자 인코딩이 적용됩니다.
반환 값
mb_stristr() 함수는 니들을 찾으면 조건에 따라 잘린 헤이스택 문자열의 일부를 반환하고, 찾지 못하면 false를 반환합니다.
예제 1
<?php
// "Hello World" 문자열 사용
// before_needle을 false로 설정
$string = mb_stristr("Hello World", "or", false);
// 출력
print_r($string);
?>
출력 결과
orld
before_needle이 false이므로 "or"가 처음 나타나는 지점부터 문자열 끝까지가 반환되어 "orld"가 출력됩니다.
예제 2
<?php
// "Hello World" 문자열 사용
// before_needle을 true로 설정
$string = mb_stristr("Hello World", "or", true);
// 출력
print_r($string);
?>
출력 결과
Hello W
before_needle이 true이므로 문자열 시작부터 "or" 직전까지가 반환되어 "Hello W"가 출력됩니다.
참고 − mb_stristr()은 stristr()과 거의 같은 방식으로 동작하지만, 차이점은 mb_stristr()이 멀티바이트 문자열을 안전하게 처리한다는 점입니다. 따라서 한글·일본어·중국어처럼 멀티바이트 인코딩이 필요한 문자열을 다룰 때는 mb_* 계열 함수를 사용하는 것이 좋습니다.