사람이 인지하는 방식의 알고리즘을 이용하여 문자열을 비교한다.
strcmp()와 동일한 역할을 수행하지만 str1과 str2의 비교방식이 다르다
strcmp()가 문자열 비교시 ASCII 코드값을 이용하는 반면 strnatcmp()는 사람이 인지하는 방식으로 두 문자열을 비교한다.
가령 ASCII 코드값은 exam_11이 exam_2보다 작다고 인식하는데 반해 strnacmp()는 정상적으로 exam_2가 크다고 인식하게 된다.
<?
$str1 = "exam_11.php";
$str2 = "exam_2.php";
echo "strcmp() 함수의 실행결과 : " . strcmp($str1, $str2) . "<br>"; //strcmp() 함수의 실행결과 : -1
echo "strnatcmp() 함수의 실행결과 : " . strnatcmp($str1, $str2); //strnatcmp() 함수의 실행결과 : 1
?>
strcmp()와 strcmp()를 이용한 정렬시 아래와 같은 차이를 알수 있다.
<?
$arr1 = $arr2 = array("exam_11.php", "exam_10.php", "exam_2.php", "exam_1.php");
echo "strcmp() 함수에 의한 정렬 결과\n";
usort($arr1, "strcmp");
print_r($arr1);
echo "strnatcmp() 함수에 의한 정렬 결과\n";
usort($arr2, "strnatcmp");
print_r($arr2);
/*
strcmp() 함수에 의한 정렬 결과
Array
(
[0] => exam_1.php
[1] => exam_10.php
[2] => exam_11.php
[3] => exam_2.php
)
strnatcmp() 함수에 의한 정렬 결과
Array
(
[0] => exam_1.php
[1] => exam_2.php
[2] => exam_10.php
[3] => exam_11.php
)
*/
?>
'PHP 주요레퍼런스 > 문자열 처리 함수' 카테고리의 다른 글
strtolower / strtoupper (0) | 2011.08.02 |
---|---|
strnatcasecmp (0) | 2011.08.02 |
strcspn (0) | 2011.08.01 |
strspn (0) | 2011.08.01 |
strlen, mb_strlen (0) | 2011.07.31 |