
Collator::asort는 문자열을 기준으로 정렬을 진행하는 PHP의 내장 함수입니다. 한글 정렬이 제대로 이루어지지 않는 문제는 Collator::asort가 한글을 처리하는 방식에由해 발생합니다.
Collator::asort는 한글을 처리하는 방식은 Unicode Code Point을 사용합니다. 한글은 Unicode Code Point의 범위가 0xAC00에서 0xD7A3까지이기 때문에, Collator::asort는 이 범위 내의 코드 포인트를 비교하여 정렬을 진행합니다.
그러나, 한글의 정렬은 한글 자모의 순서에 따라 정렬이 이루어지기 때문에, Collator::asort는 한글 자모의 순서를 고려하지 못합니다.
한글 정렬을 제대로 진행할 수 있는 방법은 Collator::asort를 사용하여 한글 자모의 순서를 고려하는 방법이 있습니다.
한글 자모의 순서를 고려하기 위해서는, 한글 문자열을 한글 자모로 분리한 후, Collator::asort를 사용하여 정렬을 진행하는 방법이 있습니다.
예를 들어, 한글 문자열 "가"를 한글 자모로 분리하면 "가"는 "ㄱ"과 "ㅏ"로 분리됩니다.
Collator::asort를 사용하여 한글 자모의 순서를 고려하는 방법은 다음과 같습니다.
#hostingforum.kr
php
$collator = new Collator('ko_KR');
$strings = ['가', '나', '다'];
// 한글 문자열을 한글 자모로 분리
$jaemos = [];
foreach ($strings as $string) {
$jaemos[] = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);
}
// 한글 자모의 순서를 고려하여 정렬
usort($jaemos, function($a, $b) {
$collator->asort($a);
$collator->asort($b);
return $a[0] <=> $b[0];
});
// 정렬된 한글 문자열을 출력
foreach ($jaemos as $jaemo) {
echo implode('', $jaemo) . "n";
}
이 방법으로 한글 정렬을 제대로 진행할 수 있습니다.
2025-07-03 23:53