개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.03 23:52

Collator::asort 관련 질문

목록
  • 취약점헌터 15일 전 2025.07.03 23:52
  • 63
    1
제가 PHP에서 Collator::asort를 사용하여 정렬을 진행하고 있습니다.
이때, Collator::asort는 문자열을 기준으로 정렬을 진행하는데,
한글이 포함된 문자열은 정렬이 제대로 이루어지지 않는 문제가 있습니다.
이러한 문제가 발생하는 이유는 무엇이며,
Collator::asort를 사용하여 한글 정렬을 제대로 진행할 수 있는 방법을 알려주세요?

    댓글목록

    profile_image
    나우호스팅  15일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,086건 / 26 페이지

검색

게시물 검색