PHP 버전
4.0.6+
$str = '반갑습니다. 환영합니다!';
$substring = '환영';

$pos = mb_strrpos($str, $substring, 0, 'UTF-8');

if ($pos !== false) {
    echo "찾은 위치: $pos";
} else {
    echo '찾을 수 없습니다.';
}

// 출력: 찾은 위치: 7

/*
 * 주의하세요!
 * 문자열에서 인덱스는 0부터 시작합니다.
 * 첫 번째 문자의 인덱스는 0이고, 두 번째 문자의 인덱스는 1입니다.
*/
$str = '반갑습니다. 환영합니다!';
$substring = '환영';

$pos = strrpos($str, $substring);

if ($pos !== false) {
    echo "찾은 위치: $pos";
} else {
    echo '찾을 수 없습니다.';
}

// 출력: 찾은 위치: 17 <= 원하지 않는 결과가 발생합니다.
mb_strrpos(
    string $haystack,
    string $needle,
    int $offset = 0,
    ?string $encoding = null
): int|false
$filename = '이미지.test.png'; // 멀티바이트 문자가 포함된 파일명

$dot_position = mb_strrpos($filename, '.', 0, 'UTF-8'); // 파일명에서 마지막 . 위치 찾기

if ($dot_position !== false) {
    $extension = mb_substr($filename, $dot_position + 1); // 마지막 . 위치 바로 다음부터 끝까지의 문자열 추출하기
    echo "파일 확장자: $extension";
} else {
    echo '확장자를 찾을 수 없습니다.';
}

// 출력: 파일 확장자: png