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

PHP iconv_strpos() 함수 완벽 정리 – 문자열에서 처음 나타나는 위치 찾기

PHP의 iconv_strpos() 함수는 주어진 문자열에서 특정 문자나 부분 문자열이 처음으로 나타나는 위치를 찾는 데 사용되는 내장 함수입니다. 일반적인 strpos() 함수와 유사하지만, 멀티바이트 인코딩을 지원한다는 점이 큰 차이입니다.

문법(Syntax)

string iconv_strpos(string $haystack, string $needle, int $offset, string $encoding)

참고: strpos()와 달리, iconv_strpos()의 반환값은 바이트 오프셋이 아니라 바늘(needle) 앞에 있는 문자의 개수입니다. 즉, 문자 수는 지정된 문자 집합 인코딩을 기준으로 계산됩니다.

매개변수(Parameters)

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

  • $haystack − 검색 대상이 되는 전체 문자열입니다.

  • $needle − 전체 문자열($haystack) 안에서 찾고자 하는 부분 문자열입니다.

  • $offset − 선택적 매개변수로, 검색을 시작할 위치를 지정합니다. 음수 값을 지정하면 문자열 끝에서부터 역방향으로 계산합니다.

  • $encoding − 이 매개변수가 생략되거나 null인 경우, 문자열은 iconv.internal_encoding 설정값으로 인코딩된 것으로 간주됩니다.

반환 값(Return Values)

iconv_strpos() 함수는 문자열(haystack) 안에서 needle이 처음 발견된 숫자 위치를 반환합니다. 만약 needle을 찾지 못하면 False를 반환합니다.

참고: PHP 8.0 버전부터 encoding 매개변수는 nullable이 허용되며, PHP 7.1부터는 iconv_strpos() 함수에서 음수 offset도 지원하기 시작했습니다.

예제 1

<?php
   # UTF-8 문자열
   $int = iconv_strpos("hello world!", "hello", 0, "UTF-8");
   // 문자 개수를 반환합니다
   var_dump($int);
?>

출력 결과

int(0)

위 예제에서 "hello"는 문자열 맨 앞에서 시작하므로 위치 0이 반환됩니다.

예제 2

<?php
   # UTF-8 문자열
   $int = iconv_strpos("hello world!", "world", 0, "UTF-8");

   // 문자 개수를 반환합니다
   var_dump($int);
?>

출력 결과

int(6)

이 예제에서 "world"는 여섯 번째 문자부터 시작하므로 6이 반환됩니다. 이처럼 iconv_strpos()는 UTF-8과 같은 멀티바이트 인코딩 환경에서도 정확한 문자 위치를 계산할 수 있어 한글 등 다국어 처리에 유용합니다.