Internationalization Collator 클래스

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)


소개

적절한 로케일 구분 정렬 순서를 지원하는 문자열 비교 기능을 제공합니다.


클래스 개요

class Collator {
  /* Methods */
  public __construct(string $locale)
  public asort(array &$array, int $flags = Collator::SORT_REGULAR): bool
  public compare(string $string1, string $string2): int|false
  public static create(string $locale): ?Collator
  public getAttribute(int $attribute): int|false
  public getErrorCode(): int|false
  public getErrorMessage(): string|false
  public getLocale(int $type): string|false
  public getSortKey(string $string): string|false
  public getStrength(): int
  public setAttribute(int $attribute, int $value): bool
  public setStrength(int $strength): bool
  public sortWithSortKeys(array &$array): bool
  public sort(array &$array, int $flags = Collator::SORT_REGULAR): bool
}
                

미리 정의된 상수

Collator::FRENCH_COLLATION (int)
문자열 뒤에서 다른 악센트로 문자열을 정렬합니다. 이 속성은 프랑스어 로케일 및 기타 몇 가지 로케일에 대해 자동으로 On으로 설정됩니다. 사용자는 일반적으로 이 속성을 명시적으로 설정할 필요가 없습니다. On으로 설정하면 문자열 비교 성능 비용이 발생하지만 정렬 키 길이는 영향을 받지 않습니다. 가능한 값은 다음과 같습니다.
  • Collator::ON
  • Collator::OFF(default)
  • Collator::DEFAULT_VALUE

Example #1 FRENCH_COLLATION rules

  • F=OFF cote < coté < côte < côté
  • F=ON cote < côte < coté < côté
Collator::ALTERNATE_HANDLING (int)
Alternate 속성은 UCA에서 공백, 구두점 및 기호와 같은 가변 문자의 처리를 제어하는 ​​데 사용됩니다. Alternate가 NonIgnorable(N)로 설정된 경우 이러한 문자 간의 차이는 문자 간의 차이와 동일한 중요성을 갖습니다. Alternate가 Shifted(S)로 설정된 경우 이러한 문자는 중요하지 않습니다.

Shifted 값은 종종 Quaternary로 설정된 Strength와 함께 사용됩니다. 이러한 경우 문자열을 비교할 때 공백, 구두점 및 기호가 고려되지만 문자열의 다른 모든 측면(기본 문자, 악센트 및 대소문자)이 동일한 경우에만 고려됩니다. Alternate가 Shifted로 설정되어 있지 않으면 Strength 3과 Strength 4 사이에 차이가 없습니다.

자세한 내용과 예시는 » UCA에서 Variable_Weighting을 참조하세요. Alternate 값이 단순히 OnOff가 아닌 이유는 향후 추가 Alternate 값이 추가될 수 있기 때문입니다. UCA 옵션 Blanked는 Strength가 3으로 설정되고 Alternate가 Shifted로 설정되어 표현됩니다.

대부분의 로케일에 대한 기본값은 NonIgnorable입니다. Shifted를 선택하면 구두점을 제외하고 동일한 문자열이 많으면 속도가 느려질 수 있습니다. 강도 수준도 증가하지 않는 한 정렬 키 길이는 영향을 받지 않습니다.

가능한 값은 다음과 같습니다.

  • Collator::NON_IGNORABLE(default)
  • Collator::SHIFTED
  • Collator::DEFAULT_VALUE

예제 #2 ALTERNATE_HANDLING 규칙

  • S=3, A=N di Silva < Di Silva < diSilva < U.S.A. < USA
  • S=3, A=S di Silva = diSilva < Di Silva < U.S.A. = USA
  • S=4, A=S di Silva < diSilva < Di Silva < U.S.A. < USA
Collator::CASE_FIRST (int)
Case_First 속성은 문자열에 다른 차이점이 없는 경우 대문자가 소문자 앞에 오거나 그 반대의 경우를 제어하는 ​​데 사용됩니다. 가능한 값은 Uppercase_First(U) 및 Lowercase_First(L)와 표준 DefaultOff입니다.

결과 측면에서 Off와 Lowercase_First 옵션 사이에는 거의 차이가 없으므로 일반적으로 사용자는 Lowercase_First를 사용하지 않고 Off 또는 Uppercase_First만 사용합니다. (X와 L의 자세한 차이점에 관심이 있는 사람들은 Collation Customization을 참조해야 합니다). L 또는 U를 지정해도 문자열 비교 성능에는 영향을 미치지 않지만 정렬 키 길이에는 영향을 미칩니다.

가능한 값은 다음과 같습니다.

  • Collator::OFF(default)
  • Collator::LOWER_FIRST
  • Collator::UPPER_FIRST
  • Collator:DEFAULT

예제 #3 CASE_FIRST 규칙

  • C=X or C=L "china" < "China" < "denmark" < "Denmark"
  • C=U "China" < "china" < "Denmark" < "denmark"
Collator::CASE_LEVEL (int)
Case_Level 속성은 대소문자가 아닌 악센트를 무시할 때 사용됩니다. 이러한 상황에서 Strength를 Primary로 설정하고 Case_Level을 On으로 설정합니다. 대부분의 로케일에서 이 설정은 기본적으로 꺼짐입니다. 이 속성이 On으로 설정된 경우 작은 문자열 비교 성능 및 정렬 키 영향이 있습니다.

가능한 값은 다음과 같습니다.

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE

예제 #4 CASE_LEVEL 규칙

  • S=1, E=X role = Role = rôle
  • S=1, E=O role = rôle < Role
Collator::NORMALIZATION_MODE (int)
Normalization 설정은 비교에서 텍스트가 완전히 정규화되었는지 여부를 결정합니다. 설정이 꺼져 있어도(많은 로케일의 기본값임) 일반적인 사용법으로 표시된 텍스트는 올바르게 비교됩니다(자세한 내용은 UTN #5 참조).

악센트 표시가 비표준 순서인 경우에만 문제가 발생합니다. 설정이 On이면 가능한 모든 텍스트 입력에 대해 최상의 결과가 보장됩니다. 이 속성이 On인 경우 정규화가 필요한 시퀀스의 빈도에 따라 중간 문자열 비교 성능 비용이 있습니다.

정렬 키 길이에는 큰 영향이 없습니다. 입력 텍스트가 NFD 또는 NFKD 정규화 형식으로 알려진 경우 이 정규화 옵션을 활성화할 필요가 없습니다.

가능한 값은 다음과 같습니다.

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE
Collator::STRENGTH (int)
ICU 대조 서비스는 여러 수준의 비교를 지원합니다("수준"이라고 하지만 "강점"이라고도 함). 이러한 범주를 사용하면 ICU에서 지역 규칙에 따라 문자열을 정확하게 정렬할 수 있습니다. 그러나 레벨을 선택적으로 사용함으로써 다양한 매칭 조건으로 텍스트에서 문자열을 검색할 수 있다. 자세한 내용은 collator_set_strength() 장을 참조하십시오.

가능한 값은 다음과 같습니다.

  • Collator::PRIMARY
  • Collator::SECONDARY
  • Collator::TERTIARY(default)
  • Collator::QUATERNARY
  • Collator::IDENTICAL
  • Collator::DEFAULT_VALUE
Collator::HIRAGANA_QUATERNARY_MODE (int)
JIS x 4061과의 호환성은 히라가나와 가타카나 문자를 구별하기 위한 추가 레벨의 도입이 필요합니다. 해당 표준과의 호환성이 필요한 경우 이 속성을 On으로 설정하고 강도를 Quaternary로 설정해야 합니다. 이는 정렬 키 길이 및 문자열 비교 문자열 비교 성능에 영향을 미칩니다.

가능한 값은 다음과 같습니다.

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE
Collator::NUMERIC_COLLATION (int)
설정하면 이 속성은 숫자 부분 문자열의 숫자 값에 대한 조합 키를 생성합니다. 이것은 '2' 이후에 '100'을 정렬하는 방법입니다.

가능한 값은 다음과 같습니다.

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE
Collator::DEFAULT_VALUE (int)
Collator::PRIMARY (int)
Collator::SECONDARY (int)
Collator::TERTIARY (int)
Collator::DEFAULT_STRENGTH (int)
Collator::QUATERNARY (int)
Collator::IDENTICAL (int)
Collator::OFF (int)
Collator::ON (int)
Collator::SHIFTED (int)
Collator::NON_IGNORABLE (int)
Collator::LOWER_FIRST (int)
Collator::UPPER_FIRST (int)

목차