PHP strnatcasecmp() 함수란?
strnatcasecmp() 함수는 두 개의 문자열을 자연 순서(natural order) 알고리즘에 따라 비교하는 PHP 내장 함수입니다. 일반적인 문자열 비교와 달리, 자연 순서 알고리즘은 사람이 인식하는 방식 그대로 문자열 속의 숫자를 하나의 수치로 취급합니다. 예를 들어 "file2"가 "file10"보다 앞에 오는 것처럼, 우리가 흔히 기대하는 직관적인 비교 결과를 얻을 수 있습니다.
참고: 이 함수는 대소문자를 구분하지 않습니다(case-insensitive). 만약 대소문자까지 구분하여 비교해야 한다면 strnatcmp() 함수를 사용하시기 바랍니다.
문법(Syntax)
strnatcasecmp(str1, str2)
매개변수(Parameters)
str1 − 비교할 첫 번째 문자열
str2 − 비교할 두 번째 문자열
반환값(Return)
strnatcasecmp() 함수는 비교 결과에 따라 아래와 같은 값을 반환합니다.
0 − 두 문자열이 같은 경우
0보다 작은 값(< 0) − str1이 str2보다 작은 경우
0보다 큰 값(> 0) − str1이 str2보다 큰 경우
예제 1: 대소문자 구분 없이 비교하기
다음 예제는 대소문자만 다른 두 문자열을 비교합니다.
<?php
echo strnatcasecmp("Demo", "DEMO");
?>
출력 결과
0
"Demo"와 "DEMO"는 대소문자만 다를 뿐 같은 문자열입니다. 따라서 대소문자를 구분하지 않는 이 함수는 0을 반환합니다.
예제 2: 자연 순서 비교 확인하기
<?php
echo strnatcasecmp("5Demo", "50DEMO");
echo "\n";
echo strnatcasecmp("50Demo", "5DEMO");
echo "\n";
echo strnatcasecmp("100Demo", "100Demo");
?>
출력 결과
-1 1 0
결과 해석
-1 : 자연 순서에서 숫자 5가 50보다 작기 때문에, "5Demo"가 "50DEMO"보다 앞에 위치합니다.
1 : 반대로 "50Demo"가 "5DEMO"보다 크므로 양수가 반환됩니다.
0 : 두 문자열이 완전히 같으므로 0이 반환됩니다.
일반적인 문자열 비교 함수라면 첫 글자부터 한 문자씩 차례로 비교하겠지만, 자연 순서 알고리즘은 연속된 숫자를 하나의 정수로 인식하여 비교합니다. 그렇기 때문에 파일명 정렬이나 버전 번호 비교처럼 숫자가 포함된 문자열을 다룰 때 훨씬 직관적이고 정확한 결과를 얻을 수 있습니다.