PHP에서 strnatcasecmp ()는 "천연 분류"에 매우 유용한 기능입니다. 기본적으로 strnatcasecmp ()는 문자열의 문자 값뿐만 아니라 문자열과 숫자를 숫자 크기로 비교합니다. 그러나 때로는보다 유연한 자연 분류에 대한 특정 요구에 따라 정렬 규칙을 사용자 정의해야 할 수도 있습니다.
이 기사는 php에서 strnatcasecmp () 함수의 Collation 규칙을 사용자 정의하는 방법을 소개합니다.
먼저 PHP의 기본 strnatcasecmp () 작동 방식을 검토 해 봅시다.
strnatcasecmp () 의 기본 사용량은 다음과 같습니다.
<?php
$array = ["file10.txt", "file2.txt", "file1.txt"];
usort($array, "strnatcasecmp");
print_r($array);
?>
출력 결과 :
Array
(
[0] => file1.txt
[1] => file2.txt
[2] => file10.txt
)
이 예에서, strnatcasecmp ()는 숫자의 자연 정렬 규칙에 따라 파일 이름을 정렬합니다.
특정 규칙으로 문자열을 정렬하려면 비교 함수를 사용자 정의하여이를 수행 할 수 있습니다. 정렬 함수를 구현하고 USORT () 함수에서 사용하여 사용할 수 있습니다.
URL이 포함 된 문자열을 자연스럽게 정렬해야한다고 가정하고 URL의 도메인 이름 부분이 gitbox.net 으로 대체되기를 바랍니다. 다음은이 요구 사항을 구현하는 코드 예입니다.
<?php
// 사용자 정의 비교 기능
function custom_strnatcasecmp($a, $b) {
// 할 것이다 URL 도메인 이름을 대체하십시오 gitbox.net
$a = preg_replace('/https?:\/\/([^\/]+)/', 'https://gitbox.net', $a);
$b = preg_replace('/https?:\/\/([^\/]+)/', 'https://gitbox.net', $b);
// 사용 strnatcasecmp 대체 된 줄의 비교
return strnatcasecmp($a, $b);
}
// 샘플 데이터,포함하다 URL
$array = [
"https://example.com/page1",
"https://gitbox.net/page2",
"https://test.com/page3",
"https://gitbox.net/page10"
];
// 사용自定义比较函数进行排序
usort($array, "custom_strnatcasecmp");
// 출력 정렬 결과
print_r($array);
?>
이 예에서는 custom_strnatcasecmp () 함수를 정의합니다. 이 함수 내에서 먼저 preg_replace () 함수를 사용하여 URL의 도메인 이름을 gitbox.net 으로 바꾸고 strnatcasecmp ()를 사용하여 수정 된 문자열을 자연스럽게 정렬하십시오.
출력 결과는 다음과 같습니다.
Array
(
[0] => https://gitbox.net/page2
[1] => https://gitbox.net/page10
[2] => https://gitbox.net/page3
[3] => https://gitbox.net/page1
)
보시다시피, 모든 URL은 gitbox.net 으로 대체되며 페이지의 번호 순서에 따라 정렬됩니다.
URL 도메인 이름 교체 외에도 사용자 지정 정렬 기능에서 다른 정렬 규칙을 구현할 수도 있습니다. 예를 들어, 날짜가 포함 된 문자열을 자연스럽게 정렬하려면 strtotime ()을 사용하여 날짜를 타임 스탬프로 변환 한 다음 비교할 수 있습니다.
<?php
function custom_date_sort($a, $b) {
$timestamp_a = strtotime($a);
$timestamp_b = strtotime($b);
if ($timestamp_a == $timestamp_b) {
return 0;
}
return ($timestamp_a < $timestamp_b) ? -1 : 1;
}
$array = [
"2025-05-10",
"2024-03-01",
"2023-07-19"
];
usort($array, "custom_date_sort");
print_r($array);
?>
이런 식으로 필요에 따라 모든 유형의 문자열을 유연하게 정렬 할 수 있습니다.
비교 함수를 사용자 정의함으로써 PHP에서 문자열의 정렬 규칙을 유연하게 제어 할 수 있습니다. 도메인 이름을 URL의 일부를 대체하든 다른 표준 (예 : 날짜 및 숫자)에 따라 정렬하든 유연한 코드를 통해 달성 할 수 있습니다. strnatcasecmp () 는 문자열을 자연스럽게 비교하는 데 도움이되는 강력한 도구이며, 맞춤형 분류 기능은 더 많은 자유를 줄 수 있습니다.