PHP의 strncmp() 함수는 두 문자열의 처음 n개 문자만 비교하는 내장 함수입니다. 전체 문자열이 아닌 지정한 길이만큼만 비교하므로, 문자열의 앞부분을 빠르게 확인해야 할 때 유용하게 사용됩니다.
참고: 이 함수는 대소문자를 구분합니다(case-sensitive). 대소문자 구분 없이 비교하려면 strncasecmp() 함수를 사용하세요.
문법(Syntax)
strncmp(str1, str2, len)
매개변수(Parameters)
str1 − 비교할 첫 번째 문자열입니다.
str2 − 비교할 두 번째 문자열입니다.
len − 비교에 사용할 문자의 개수입니다.
반환값(Return)
strncmp() 함수는 비교 결과에 따라 아래와 같은 정숫값을 반환합니다.
0 − 두 문자열이 완전히 같은 경우
0보다 작은 값(< 0) − 첫 번째 문자열(str1)이 두 번째 문자열(str2)보다 작은 경우
0보다 큰 값(> 0) − 첫 번째 문자열(str1)이 두 번째 문자열(str2)보다 큰 경우
문자열의 크고 작음은 각 위치의 문자 ASCII 코드 값을 순서대로 비교하여 결정됩니다.
예제 1
다음은 strncmp() 함수의 기본적인 사용 예시입니다.
<?php
echo strncmp("Demo text!","DEMO word!",4);
?>
출력 결과
8192
앞의 4글자 "Demo"와 "DEMO"를 비교하면 대소문자가 서로 다르기 때문에 0이 아닌 값이 반환됩니다.
예제 2
이번에는 변수에 담긴 문자열을 비교해 보겠습니다.
<?php
$str1 = "TomHanks";
$str2 = "tomhanks";
print_r(strncmp($str1, $str2, 8));
?>
출력 결과
-32
첫 글자에서 'T'(ASCII 84)와 't'(ASCII 116)의 코드 값 차이로 인해 음수가 반환됩니다. 즉, 대소문자가 한 글자라도 다르면 두 문자열은 같지 않다고 판단됩니다.
마무리
strncmp()는 대소문자를 구분하며 지정한 길이만큼만 비교한다는两点만 기억하면 됩니다. 관련 함수로는 대소문자를 구분하지 않고 n글자를 비교하는 strncasecmp(), 전체 문자열을 비교하는 strcmp() 등이 있으니 용도에 맞게 활용하세요.