PHP 주요레퍼런스/문자열 처리 함수

strnatcmp

웹 개발자의 비상 2011. 8. 2. 00:35
int strnatcmp(string str1, string str2)
사람이 인지하는 방식의 알고리즘을 이용하여 문자열을 비교한다.

strcmp()와 동일한 역할을 수행하지만 str1과 str2의 비교방식이 다르다
strcmp()가 문자열 비교시 ASCII 코드값을 이용하는 반면 strnatcmp()는 사람이 인지하는 방식으로 두 문자열을 비교한다.
가령 ASCII 코드값은 exam_11이 exam_2보다 작다고 인식하는데 반해 strnacmp()는 정상적으로 exam_2가 크다고 인식하게 된다.

예제1

<?
$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()를 이용한 정렬시 아래와 같은 차이를 알수 있다.

예제2

<?
$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
)
*/
?>

728x90

'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