Collator 类

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

介绍

提供字符串比较功能,支持相应的区域设置敏感排序顺序。

类概要

class Collator {
/* 常量 */
public const int DEFAULT_VALUE;
public const int PRIMARY;
public const int SECONDARY;
public const int TERTIARY;
public const int DEFAULT_STRENGTH;
public const int QUATERNARY;
public const int IDENTICAL;
public const int OFF;
public const int ON;
public const int SHIFTED;
public const int NON_IGNORABLE;
public const int LOWER_FIRST;
public const int UPPER_FIRST;
public const int FRENCH_COLLATION;
public const int ALTERNATE_HANDLING;
public const int CASE_FIRST;
public const int CASE_LEVEL;
public const int NORMALIZATION_MODE;
public const int STRENGTH;
public const int NUMERIC_COLLATION;
public const int SORT_REGULAR;
public const int SORT_STRING;
public const int SORT_NUMERIC;
/* 方法 */
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 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 sort(array &$array, int $flags = Collator::SORT_REGULAR): bool
public sortWithSortKeys(array &$array): bool
}

预定义常量

Collator::FRENCH_COLLATION

从字符串末尾对具有不同重音的字符串进行排序。 此属性会自动为法语语言环境和其他几个语言环境设置为开启。 用户通常不需要显式设置此属性。 当它设置为开启时,字符串比较性能会有一定损失,但排序键长度不受影响。 可能的值为

示例 #1 FRENCH_COLLATION 规则

  • F=OFF cote < coté < côte < côté
  • F=ON cote < côte < coté < côté

Collator::ALTERNATE_HANDLING

Alternate 属性用于控制 UCA 中所谓的可变字符(空格、标点符号和符号)的处理方式。 如果 Alternate 设置为非忽略 (N),则这些字符之间的差异与字母之间的差异同等重要。 如果 Alternate 设置为移位 (S),则这些字符的意义仅次于其他字符。 移位 值通常与 Strength 设置为四级一起使用。 在这种情况下,空格、标点符号和符号会在比较字符串时被考虑,但只有在字符串的其他所有方面(基本字母、重音和大小写)都相同的情况下才会被考虑。 如果 Alternate 未设置为 Shifted,则 3 级和 4 级的 Strength 之间没有区别。 有关更多信息和示例,请参见 » UCA 中的 Variable_Weighting。 Alternate 值不是简单的 开启关闭 的原因是,未来可能会添加额外的 Alternate 值。 UCA 选项 Blanked 通过将 Strength 设置为 3 且 Alternate 设置为 Shifted 来表示。 对于大多数语言环境,默认值为非忽略。 如果选择 Shifted,则如果有很多字符串除了标点符号外都相同,则可能会变慢;除非强度级别也提高,否则排序键长度不会受到影响。

可能的值为

示例 #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

Case_First 属性用于控制在字符串没有其他差异的情况下,大写字母是在小写字母之前还是之后。 可能的值为大写字母优先 (U) 和小写字母优先 (L),以及标准的默认关闭。 从结果方面来看,关闭和 小写字母优先 选项几乎没有区别,因此用户通常不会使用 小写字母优先:只使用 关闭 或 大写字母优先。 (对 X 和 L 之间详细差异感兴趣的人应该参考 Collation Customization)。 指定 L 或 U 不会影响字符串比较性能,但会影响排序键长度。

可能的值为

示例 #3 CASE_FIRST 规则

  • C=X 或 C=L "china" < "China" < "denmark" < "Denmark"
  • C=U "China" < "china" < "Denmark" < "denmark"

Collator::CASE_LEVEL

Case_Level 属性用于忽略重音但不忽略大小写的情况。 在这种情况下,将 Strength 设置为,并将 Case_Level 设置为开启。 在大多数语言环境中,此设置默认情况下为关闭。 如果此属性设置为开启,则字符串比较性能和排序键会有一定影响。

可能的值为

示例 #4 CASE_LEVEL 规则

  • S=1, E=X role = Role = rôle
  • S=1, E=O role = rôle < Role

Collator::NORMALIZATION_MODE

Normalization 设置确定比较时是否彻底规范化文本。 即使该设置关闭(这是许多语言环境的默认设置),在普通用法中表示的文本也会正确比较(有关详细信息,请参见 UTN #5)。 只有当重音标记的顺序不规范时才会出现问题。 如果该设置为开启,则可以保证所有可能的文本输入都能获得最佳结果。 如果此属性为开启,则字符串比较性能会有一定损失,具体取决于需要规范化的序列的频率。 对排序键长度没有重大影响。 如果已知输入文本采用 NFD 或 NFKD 规范化形式,则无需启用此 Normalization 选项。

可能的值为

Collator::STRENGTH

ICU 排序服务支持许多级别的比较(称为“级别”,但也称为“强度”。 这些类别使 ICU 能够根据本地约定对字符串进行精确排序。 但是,通过允许选择性地使用这些级别,可以在文本中搜索字符串,并使用各种匹配条件。 有关更详细的信息,请参见 collator_set_strength() 章。

可能的值为

Collator::HIRAGANA_QUATERNARY_MODE

与 JIS x 4061 的兼容性要求引入一个额外的级别来区分平假名和片假名字符。 如果需要与该标准兼容,则应将此属性设置为开启,并将强度设置为四级。 这会影响排序键长度和字符串比较性能。

可能的值为

Collator::NUMERIC_COLLATION

开启此属性后,将为数字子字符串的数字值生成排序键。 这是一种使“100”排序在“2”之后的方法。

可能的值为

Collator::DEFAULT_VALUE
Collator::PRIMARY
Collator::SECONDARY
Collator::TERTIARY
Collator::DEFAULT_STRENGTH
Collator::QUATERNARY
Collator::IDENTICAL
Collator::OFF
Collator::ON
Collator::SHIFTED
Collator::NON_IGNORABLE
Collator::LOWER_FIRST
Collator::UPPER_FIRST
Collator::SORT_REGULAR

Collator::SORT_STRING

Collator::SORT_NUMERIC

目录

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top