PHP 문자열 검색 함수 strstr, strpos, strrpos 사용법과 비교
페이지 정보

본문
그누보드 기능을 적용하거나 코드를 수정하려는 운영자·개발자를 위해 PHP 문자열 검색 함수인 strstr(), strpos(), strrpos()의 문법과 반환값 비교 방법을 정리합니다.
PHP 문자열 검색 함수 사용법
PHP에서 특정 문자열의 포함 여부와 위치를 확인하기 위해 strstr(), strpos(), strrpos() 함수를 사용할 수 있습니다.
1. strstr() 함수
문자열 안에서 특정 문자열이 처음으로 발견되는 위치부터 시작해 나머지 문자열 전체를 반환합니다. 대상을 찾지 못하면 FALSE를 반환합니다.
<?php
$string = 'Hello World!';
if(strstr($string, 'earth') === FALSE) {
echo '"earth"를 문자열에서 발견하지 못했습니다.';
} else {
echo '"earth"를 문자열에서 발견했습니다.';
}
?>
2. strpos() 함수
문자열이 처음 나타나는 위치(인덱스)를 찾습니다. 전체 문자열을 인수로 받아 검색하며, 검색 시작 위치를 지정할 수 있습니다. 발견되지 않으면 FALSE를 반환합니다.
<?php
$string = 'Hello World!';
if(strpos($string, 'earth')!== FALSE) {
echo '"earth"를 문자열에서 발견했습니다.';
} else {
echo '"earth"를 문자열에서 발견하지 못했습니다.';
}
?>
3. strrpos() 함수
문자열에서 마지막 문자의 위치를 찾습니다. 문자열의 뒤쪽에서부터 검색을 수행할 때 활용합니다.
<?php
$pos = strrpos($mystring, "b");
if ($pos === false) {
// 발견되지 않았습니다...
}
?>
strpos() 함수 반환값 비교 방법
PHP의 strpos() 함수는 지정한 문자열이 처음으로 나타나는 위치(인덱스)를 숫자로 반환하며, 문자열을 찾지 못한 경우 불리언 값 false를 반환합니다.
만약 검색한 문자열이 맨 처음(0번째 위치)에 존재하여 반환값이 0이 될 때, 이를 일반 비교 연산자(== 등)로 확인하면 숫자 0을 거짓(false)으로 인식하여 오류나 논리적 착오가 발생할 수 있습니다.
엄격한 비교 연산자 사용
위치값 0과 문자열 미발견 시의 false를 정확히 구별하려면 반드시 엄격한 비교 연산자(=== 또는 !==)를 사용해야 합니다.
<?php
$string = 'Hello World!';
$pos = strpos($string, 'H');
if ($pos === false) {
echo '문자열을 찾지 못했습니다.';
} else {
echo '문자열을 찾았습니다. 위치: '. $pos;
}
?>
- 찾지 못한 경우:
$pos === false조건이 참이 되어 문자열이 없음을 판별합니다. - 0번째 위치에서 찾은 경우:
$pos는 정수0이므로=== false비교는 거짓이 되어 올바르게 '찾음' 블록을 실행합니다.
strstr()과 strpos() 함수의 차이점
PHP에서 문자열을 검색할 때 strstr()과 strpos()는 반환하는 데이터의 형태와 목적에서 차이가 있습니다.
1. 동작 방식 및 반환 형태
- strstr(): 대상 문자열에서 조건 문자열이 처음 발견된 지점부터 끝까지의 문자열 전체를 반환합니다. 발견되지 않으면
FALSE를 반환합니다. - strpos(): 대상 문자열에서 조건 문자열이 처음 나타나는 위치(인덱스 번호)를 정수로 반환합니다. 발견되지 않으면
FALSE를 반환합니다.
2. 활용 및 권장 사항
- 데이터 추출: 발견된 지점 이후의 문자열이 필요한 경우에는
strstr()을 사용합니다. - 위치 확인 및 성능: 단순히 문자열의 포함 여부만 확인하거나 위치 인덱스가 필요한 경우에는
strpos()를 사용하는 것이 좋습니다.strpos()는strstr()보다 실행 속도가 빨라 문자열 포함 여부 체크에 더 권장됩니다.
3. 주의사항
두 함수 모두 검색 결과가 없을 때 FALSE를 반환합니다. 만약 검색 대상이 문자열의 맨 앞(인덱스 0)에 위치할 경우, 0은 FALSE와 동일하게 취급될 수 있으므로 반드시 엄격한 비교 연산자(=== 또는 !==)를 사용하여 결과값을 확인해야 합니다.
PHP 문자열 검색 함수 사용법: strstr, strpos, strrpos
PHP에서 문자열의 포함 여부나 위치를 확인할 때 사용하는 대표적인 함수들의 문법과 예제 코드, 반환값 비교 방법입니다.
1. strstr()
지정한 문자열에서 첫 번째로 나타나는 특정 문자열을 찾고, 해당 위치부터 끝까지의 문자열 또는 나머지 부분을 반환합니다. 대상을 찾지 못한 경우 FALSE를 반환합니다.
<?php
$string = 'Hello World!';
if(strstr($string, 'earth') === FALSE) {
echo '"earth"를 문자열에서 발견하지 못했습니다.';
} else {
echo '"earth"를 문자열에서 발견했습니다.';
}
?>
2. strpos()
대상 문자열의 앞부분부터 검색하여 조건 문자열이 처음 나타나는 위치(숫자 인덱스)를 찾습니다. 문자의 첫 글자는 0부터 카운트합니다.
<?php
$string = 'Hello World!';
if(strpos($string, 'earth')!== FALSE) {
echo '"earth"를 문자열에서 발견했습니다.';
} else {
echo '"earth"를 문자열에서 발견하지 못했습니다.';
}
?>
3. strrpos()
대상 문자열의 뒷부분부터 검색하여 조건 문자열이 마지막으로 나타나는 위치를 찾습니다. 파일 확장자나 경로 구분 기호처럼 뒤쪽에서 특정 문자를 찾아야 하는 상황에 유용하게 활용할 수 있습니다.
<?php
// PHP 4.0.0 이상
$pos = strrpos($mystring, "b");
if ($pos === false) {
// 발견되지 않았습니다...
}
// 4.0.0 미만
$pos = strrpos($mystring, "b");
if (is_bool($pos) &&!$pos) {
// 발견되지 않았습니다...
}
?>
4. 반환값 비교 시 주의사항 (엄격한 비교 연산자 사용)
strpos()나 strrpos() 함수는 검색 결과가 첫 번째 글자(0) 위치일 때 숫자 0을 반환합니다. PHP에서 0은 조건문에서 false로 취급될 수 있으므로, 문자의 존재 여부를 정확히 확인하려면 == 대신 === 또는 !== (엄격한 비교 연산자)를 사용해야 합니다.
함께 보면 좋은 글
- 그누보드 문자열 글자 자르기 cutstr 함수 사용법과 버전별 적용 방법
- PHP 에러 제어 연산자(@) 사용법과 MySQL 에러 메시지 숨기기
- PHP 파일 입출력 및 fpassthru 함수 사용법과 특성
참고자료
기타 참고자료
- 이전글그누보드 게시판 댓글 고유 주소(링크) 구현 방법 26.10.13
- 다음글PHP 프레임워크 트렌드 및 주요 특징 비교 26.10.11
댓글목록
등록된 댓글이 없습니다.