PHP의 substr_compare() 함수는 지정한 시작 위치부터 두 문자열을 비교하는 데 사용됩니다. 대소문자 구분 여부와 비교 길이까지 세밀하게 제어할 수 있어 문자열 비교 작업에서 유용하게 활용됩니다.
문법(Syntax)
substr_compare(str1, str2, offset, len, case_insensitive)
매개변수(Parameters)
str1 − 비교할 첫 번째 문자열입니다.
str2 − 비교할 두 번째 문자열입니다.
offset − 비교를 시작할 위치입니다. 음수 값을 지정하면 문자열의 끝에서부터 역방향으로 계산합니다.
len − 첫 번째 문자열에서 비교할 길이입니다.
case_insensitive − TRUE로 설정하면 대소문자를 구분하지 않고 비교합니다. 기본값은 FALSE로, 대소문자를 구분합니다.
반환값(Return)
substr_compare() 함수는 다음과 같은 값을 반환합니다.
0 − 두 문자열이 동일한 경우
<0 − offset부터 시작한 str1이 str2보다 작은 경우
>0 − offset부터 시작한 str1이 str2보다 큰 경우
또한 len 값이 str1의 길이와 같거나 더 크면 FALSE를 반환합니다. 이 점을 주의해서 사용해야 합니다.
예제 1: 기본 사용법
다음은 substr_compare() 함수의 기본적인 사용 예제입니다.
<?php
echo substr_compare("pqrstrs", "qr", 1, 2);
?>
출력 결과
0
위 예제에서 "pqrstrs" 문자열의 인덱스 1 위치부터 2글자인 "qr"과 두 번째 문자열 "qr"을 비교하므로, 두 문자열이 일치하여 0이 반환됩니다.
예제 2: 비교 길이 변경
이번에는 비교 길이를 3으로 늘려본 예제입니다.
<?php
echo substr_compare("pqrstrs", "qr", 1, 3);
?>
출력 결과
1
비교 길이가 3으로 늘어나면서 "pqr"과 "qr"을 비교하게 되어, str1 쪽이 더 크다는 의미로 1이 반환됩니다.
예제 3: 대소문자 구분 없이 비교
case_insensitive 매개변수를 TRUE로 설정하면 대소문자 차이를 무시하고 비교할 수 있습니다.
<?php
echo substr_compare("Laptop", "AP", 1, 2, true)."\n";
?>
출력 결과
0
"Laptop"의 인덱스 1부터 2글자인 "ap"와 "AP"를 대소문자 구분 없이 비교했기 때문에 두 문자열이 같다고 판단되어 0이 반환됩니다.
정리
substr_compare() 함수는 문자열의 특정 부분만 잘라내어 비교해야 할 때 유용합니다. offset에 음수를 사용하면 뒤에서부터 위치를 지정할 수 있고, case_insensitive 옵션으로 대소문자 무시 여부도 조절할 수 있습니다. 단, len이 첫 번째 문자열의 길이 이상이 되지 않도록 주의하세요.