반응형
🔎 strpos 내장 함수란
지정한 문자열 안에서 특정 문자열의 처음 위치를 찾아 반환하는 함수이며, 찾으면 위치(정수), 못 찾으면 false를 반환

PHP strpos() 함수 완벽 정리
1. strpos()란?
strpos()는 PHP에서 문자열 검색에 사용되는 함수로,
"지정한 문자열 안에서 특정 문자열의 '첫 번째 위치'를 찾아 반환"하는 기능을 한다.
찾으면 위치(정수)를 반환하고, 못 찾으면 false를 반환한다.
2. 기본 시그니처
strpos( string $haystack , mixed $needle [, int $offset = 0 ]): int
- string $haystack: 검색 대상이 되는 전체 문자열
- mixed $needle: 찾으려는 문자열(또는 숫자 등)
- int $offset (선택): 몇 번째 문자부터 검색을 시작할지 (기본값: 0)
- 반환값: 찾으면 정수(int), 못 찾으면 false
실제로는 반환 타입이 int 또는 false (int|false)
3. 예제
$str = "hello world";
// 'world'의 위치 찾기
$pos = strpos($str, "world"); // 결과: 6
// 'hello'의 위치 찾기 (맨 앞)
$pos = strpos($str, "hello"); // 결과: 0
// 없는 문자열 찾기
$pos = strpos($str, "apple"); // 결과: false
4. 비교할 때 주의할 점
strpos()는 찾은 위치가 0일 수도 있기 때문에, 단순히 if (strpos(...))로 조건을 걸면 0이 false로 처리돼 버린다. 예를 들어:
if (strpos($str, 'hello')) {
// 잘못된 방식: 'hello'가 맨 앞이면 작동 안 함
}
위 경우 'hello'가 맨 앞에 있어서 strpos가 0을 반환해도 조건문이 false로 작동한다.
따라서 반드시 !== false로 비교해야 안전하다.
if (strpos($str, 'hello') !== false) {
echo '찾았다!';
}
또는 조금 느슨하게 이렇게도 가능하다.
if (strpos($str, 'hello') > -1) {
// 위치가 0이어도 잘 작동
}
5. 왜 > -1을 썼을까?
코드에서 이런 걸 종종 볼 수 있다.
if (strpos($_SERVER['REQUEST_URI'], '/owners') > -1)
이유는 strpos()가 못 찾으면 false를 반환하는데,
false > -1 은 false (못 찾음)
0 > -1 은 true (찾음, 맨 앞에 위치)
즉, 이 방법은 찾은 위치가 0이어도 제대로 작동해서 실용적이다. 다만 공식적으로는 !== false가 더 권장된다.
6. 한마디로 정의
strpos()는 문자열에서 특정 문자열의 첫 번째 위치를 반환하고, 없으면 false를 반환하는 함수다.
반응형
'웹 > PHP' 카테고리의 다른 글
| CodeIgniter에서 사이트 렌더링 과정 (1) | 2025.05.01 |
|---|---|
| 훅 - 전역 변수 MEMBER 사용방법 (1) | 2025.04.28 |
