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

PHP mb_strrichr() 함수 완벽 가이드 – 대소문자 구분 없이 마지막 발생 위치 찾기

mb_strrichr() 함수란?

PHP의 mb_strrichr() 함수는 멀티바이트 문자열에서 특정 문자열(needle)이 마지막으로 나타나는 위치를 기준으로 문자열을 추출하는 데 사용됩니다. 이 함수는 mb_strrchr()과 유사하지만, 대소문자를 구분하지 않는다는 점이 가장 큰 차이입니다.

주어진 대상 문자열(haystack)에서 needle이 마지막으로 등장하는 지점을 찾아 해당 지점을 기준으로 한 문자열의 일부를 반환하며, needle을 찾지 못하면 false를 반환합니다.

문법

string mb_strrichr(
   $str_haystack,
   $str_needle,
   $bool_before_needle = false,
   $str_encoding
)

매개변수

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

  • str_haystack − needle이 마지막으로 나타나는 위치를 찾을 원본 문자열입니다.

  • str_needle − haystack 안에서 검색할 문자열입니다.

  • before_needle − 반환할 문자열의 범위를 결정하는 불리언 값입니다.

    • true로 설정하면, 문자열 처음부터 needle이 마지막으로 나타나는 위치 앞부분까지 반환합니다.

    • false(기본값)로 설정하면, needle이 마지막으로 나타나는 위치부터 문자열 끝까지 반환합니다.

  • str_encoding − 사용할 문자 인코딩 이름입니다. 생략하면 PHP의 내부 인코딩이 사용됩니다.

반환값

이 함수는 조건에 따라 haystack 문자열의 지정된 부분을 반환하고, needle을 찾지 못한 경우 false를 반환합니다.

예제 1: before_needle이 false인 경우

<?php
   // UTF-8 인코딩 사용
   // 대상 문자열: HelloWorld
   // 검색 문자열(needle): "rl"
   // before_needle: false
   $string = mb_strrichr("HelloWorld", "rl", false, "UTF-8");

   // 출력 결과: string(3) "rld"
   var_dump($string);
?>

출력 결과:

string(3) "rld"

"rl"이 마지막으로 나타나는 위치부터 문자열 끝까지인 rld가 반환되었습니다.

예제 2: before_needle이 true인 경우

<?php
   // UTF-8 인코딩 사용
   // 대상 문자열: Hello World
   // 검색 문자열(needle): "rl"
   // before_needle: true
   $string = mb_strrichr("Hello World", "rl", true, "UTF-8");

   // 출력 결과: string(8) "Hello Wo"
   var_dump($string);
?>

출력 결과:

string(8) "Hello Wo"

before_needle이 true이므로 문자열 처음부터 needle이 마지막으로 나타나는 위치 앞까지인 Hello Wo가 반환되었습니다.

예제 3: needle을 찾지 못한 경우

<?php
   // UTF-8 인코딩 사용
   // 대상 문자열: Hello World
   // 검색 문자열(needle): "ef"
   // "ef"는 haystack에서 일치하지 않으므로 false 반환
   $string = mb_strrichr("Hello World", "ef", true, "UTF-8");

   // 출력 결과: false
   var_dump($string);
?>

출력 결과:

bool(false)

참고: 대소문자를 구분하지 않음

mb_strrichr()은 대소문자를 구분하지 않으므로, 검색 문자열의 대소문자가 달라도 정상적으로 동작합니다.

<?php
   // 대문자 "RL"로 검색해도 동일한 결과를 얻을 수 있습니다.
   $string = mb_strrichr("HelloWorld", "RL", false, "UTF-8");
   var_dump($string); // string(3) "rld"
?>

반면, 대소문자를 구분하는 mb_strrchr() 함수와 혼동하지 않도록 주의해야 합니다.

정리

mb_strrichr() 함수는 멀티바이트 문자열을 다룰 때 대소문자 구분 없이 마지막 발생 위치를 기준으로 문자열을 추출하는 데 유용합니다. 파일 확장자 추출, URL 경로 처리 등 다양한 상황에서 활용할 수 있으며, before_needle 매개변수를 통해 반환 범위를 자유롭게 조절할 수 있다는 점이 장점입니다.