정의 및 사용 방법
- PHP 버전
- 5+
stripos()
함수는
문자열에서 인수로 전달된 문자열를 찾아 첫 번째로 검색된(등장한) 문자열의 인덱스를 반환하는 함수입니다.
이 함수는 대소문자를 구분하지 않습니다.
인수로 전달된 문자열를 찾을 수 없다면 false
을 반환합니다.
이 함수는 문자열에서 대소문자를 구분하지 않고 문자의 위치를 찾거나, 포함하는지 확인할 때 유용합니다.
특징
- 대소문자를 구분하지 않습니다.
- 한글과 같은 multi-byte(멀티바이트) 문자열을 지원하지 않습니다.
- 대상 문자열에서 주어진 문자열이 처음 나타나는 위치(인덱스)를 반환합니다.
- 주어진 문자열이 포함되어 있지 않으면
false
를 반환합니다.
기본 예제
$str = 'Hello, World!';
$substring = 'world'; // 대소문자를 구분하지 않음
$pos = stripos($str, $substring);
if ($pos !== false) {
echo "찾은 위치: $pos";
} else {
echo '찾을 수 없습니다.';
}
// 출력: 찾은 위치: 7
/*
* 주의하세요!
* 문자열에서 인덱스는 0부터 시작합니다.
* 첫 번째 문자열의 인덱스는 0이고, 두 번째 문자열의 인덱스는 1입니다.
*/
유용한 팁
- 한글과 같은 multi-byte(멀티바이트) 문자열에서는
mb_stripos()
함수를 사용하세요. - 만약 대소문자를 구분해서 문자열에서 특정 문자열의 위치를 찾고자 한다면
strpos()
함수를 사용하세요.
구문
stripos(string $haystack, string $needle, int $offset = 0): int|false
매개변수
$haystack |
검색 대상이 되는 문자열입니다. |
---|---|
$needle |
검색할 문자열입니다.
대소문자를 구분하지 않습니다. |
$offset |
옵션. 검색을 시작할 0 기반의 인덱스입니다.
|
반환 값
대상 문자열에서 주어진 문자열($needle
)이 처음 나타나는 위치(인덱스)를 반환합니다.
문자열 위치는 1
이 아닌 0
부터 시작한다는 점에 유의하세요.
- 주어진 문자열(
$needle
)이 포함되어 있지 않으면false
를 반환합니다. - 주어진 문자열(
$needle
)이 빈 문자열(''
)일 경우false
를 반환합니다.
주의하세요!
stripos()
함수와 달리 strpos()
함수는 PHP 8 이전의 버전에서 주어진 문자열($needle
)이 빈 문자열(''
)일 경우 Warning 에러가 발생합니다.
$haystack = 'Hello, World!';
var_dump(stripos($haystack, '')); // bool(false)
var_dump(strpos($haystack, '')); // Warning: strpos(): Empty needle in
변경 이력
버전 | 설명 |
---|---|
8.2.0 | PHP 8.2.0 이전에는 setlocale() 에 따라 일부 비ASCII 문자(예: 한글, 일본어, 중국어 등)의 대소문자 비교 결과가 달라질 수 있었습니다. PHP 8.2.0부터는 오직 ASCII 문자만 대소문자 구분 없이 비교합니다. 그 외 문자는 그냥 바이트 단위로 비교합니다. |
8.0.0 | $needle 에 빈 문자열('' )을 허용합니다. |
8.0.0 | $needle 에 정수형(int ) 값을 전달하는 기능이 완전히 지원되지 않게 되었습니다. |
7.3.0 | $needle 에 정수형(int ) 값을 전달하는 기능이 사용 중단(deprecated) 처리되었습니다. |
7.1.0 | $offset 에 음수를 전달할 수 있게 되었습니다. |
주의할 점
문자열에서 인덱스는 0부터 시작합니다.
첫 번째 문자열의 인덱스는 0이고, 두 번째 문자열의 인덱스는 1입니다.
$newstring = 'abcdef ghijk';
$pos = stripos($newstring, 'a');
var_dump($pos); // int(0)
이 함수를 Boolean
타입으로 반환 값을 사용할 때에는 주의가 필요합니다.
이 함수의 반환 값을 테스트하려면 ===
연산자를 사용하세요 .
stripos()
함수는 반환 값으로 대상 문자열에서 주어진 문자열이 처음 나타나는 위치(인덱스)를 반환합니다. 문자열 위치는 1
이 아닌 0
부터 시작한다는 점에 유의해야 합니다.
대상 문자열에서 주어진 문자열의 위치가 첫 번째에 위치하고 있다고 가정해 보겠습니다.
이 경우 반환 값은 0
이 됩니다.
0
은 ==
연산자로 변환하면 false
를 반환하게 됩니다.
실제 주어진 문자열이 존재하지만 false
를 반환하기 때문에 부울(boolean) 타입으로 반환 값을 테스트하려면 엄격한 타입 비교가 수행되어 하기 때문에 ===
연산자를 사용해야 합니다.
Boolean
타입으로 반환 값을 사용할 때에는 ===
연산자를 사용하세요 .
$str = 'Hello, World!';
$substring = 'hello';
$pos = stripos($str, $substring);
var_dump($pos); // int(0)
if ($pos === false) {
echo "문자열에 'Hello'를 찾을 수 없습니다.";
} else {
echo "문자열에 'Hello'가 포함되어 있습니다.";
}
// 출력: "문자열에 'Hello'가 포함되어 있습니다."
예제
stripos()
함수는 문자열에서 부분 문자열의 위치를 찾을 때 유용하게 사용될 수 있습니다. 이 함수의 주된 특징은 대소문자를 구분하지 않는다는 것이며, 이로 인해 대소문자에 민감하지 않게 문자열을 검색할 수 있습니다.
사용자 입력 검색
$user_input = $_GET['search_query'];
$content = 'This is a sample text for searching.';
if (stripos($content, $user_input) !== false) {
echo '검색어가 발견되었습니다.';
} else {
echo '검색어를 찾을 수 없습니다.';
}
대소문자 무시한 문자열 검사
$string = '학교종이 땡땡땡 어서 모이자!';
$search_term = '땡땡땡';
if (stripos($string, $search_term) !== false) {
echo '검색어가 발견되었습니다.';
} else {
echo '검색어를 찾을 수 없습니다.';
}
// 출력: '검색어가 발견되었습니다.'
문자열이 특정 단어로 시작하는지 확인
$string = 'Hello, world!';
$prefix = 'hello';
if (stripos($string, $prefix) === 0) {
echo "문자열은 '$prefix'로 시작됩니다.";
} else {
echo "문자열은 '$prefix'로 시작되지 않습니다.";
}
// 출력: "문자열은 'hello'로 시작됩니다."
같이 보기
- PHP strpos() 함수 – 대소문자 구분해서 문자열에 특정 문자 포함 여부 확인
- PHP mb_strpos() 함수 - strpos()의 한글 지원 기능 제공
- PHP str_contains() 함수 – 대소문자 구분해서 문자열에 특정 문자 포함 여부 확인
- PHP substr() 함수 - 문자열을 잘라서 추출하기
- PHP mb_substr() 함수 – substr()의 한글 깨짐을 해결하기
- PHP mb_stripos() 함수 – stripos()의 한글 지원 기능 제공
- PHP str_replace() 함수 – 문자열에서 특정 문자열을 다른 문자열로 바꾸는 함수
- PHP str_starts_with() 함수 – 특정 문자열로 시작하는지 체크
- PHP str_ends_with() 함수 – 특정 문자열로 끝나는지 체크