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

PHP mb_stristr() 함수 – 대소문자 구분 없이 멀티바이트 문자열 검색하기

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_* 계열 함수를 사용하는 것이 좋습니다.