Collator::setStrength

collator_set_strength

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

Collator::setStrength -- collator_set_strength设置排序强度

描述

面向对象风格

public Collator::setStrength(int $strength): bool

过程化风格

collator_set_strength(Collator $object, int $strength): bool

» ICU 排序服务支持多种比较级别(称为“级别”,但也称为“强度”)。拥有这些类别使 ICU 能够根据本地约定精确地排序字符串。但是,通过允许选择性地使用这些级别,可以在各种匹配条件下在文本中搜索字符串。

  1. 主要级别:通常,这用于表示基本字符之间的差异(例如,“a” < “b”)。它是最强的差异。例如,字典按基本字符划分为不同的部分。这也被称为 level 1 强度。

  2. 次要级别:字符中的重音被认为是次要差异(例如,“as” < “às” < “at”)。字母之间的其他差异也可能被认为是次要差异,具体取决于语言。当字符串中存在主要差异时,次要差异会被忽略。这也被称为 level 2 强度。

    注意:

    注意:在某些语言(如丹麦语)中,某些带重音的字母被认为是独立的基本字符。但在大多数语言中,带重音的字母与其未带重音的版本之间只有次要差异。

  3. 三级:字符的大小写差异在三级区分(例如,“ao” < “Ao” < “aò”)。此外,字母的变体在三级与基本形式不同(如“a” 和 “𝒶”)。另一个例子是大写和小型片假名之间的差异。当字符串中存在主要或次要差异时,三级差异会被忽略。这也被称为 level 3 强度。

  4. 四级:当标点符号在级别 1-3 中被忽略(请参阅 忽略标点符号)时,可以使用额外级别来区分有和没有标点符号的单词(例如,“ab” < “a-b” < “aB”)。当存在主要、次要或三级差异时,此差异会被忽略。这也被称为 level 4 强度。只有在需要忽略标点符号或处理日语文本时(请参阅 平假名处理),才应使用四级。

  5. 相同级别:当所有其他级别相等时,相同级别被用作区分器。在此级别比较每个字符串 NFD 形式的 Unicode 代码点值,以防级别 1-4 没有差异。例如,希伯来语的吟唱标记仅在此级别区分。此级别应谨慎使用,因为两个字符串之间只有代码点值差异的情况极其罕见。使用此级别会大幅降低增量比较和排序键生成的性能(以及增加排序键长度)。它也被称为 level 5 强度。

例如,人们可以选择在搜索文本时忽略重音或忽略重音和大小写。几乎所有字符都由前三个级别区分,因此在大多数语言环境中,默认值为三级。但是,如果将“备用”设置为“偏移”,则可以使用四级强度来区分否则会被忽略的空格、标点符号和符号。如果需要在字符之间进行非常精细的区分,则可以使用相同强度(例如,相同强度区分数学粗体小写 A 和数学斜体小写 A)。但是,使用高于三级或相同强度的级别会导致排序键显着变长,并且对于相等字符串的字符串比较性能会下降。

返回值

成功时返回 true,失败时返回 false

示例

示例 #1 collator_set_strength() 示例

<?php
$arr
= array( 'aò', 'Ao', 'ao' );
$coll = collator_create( 'en_US' );

// 使用默认强度对数组进行排序。
collator_sort( $coll, $arr );
var_export( $arr );

// 使用主要强度对数组进行排序。
collator_set_strength( $coll, Collator::PRIMARY );
collator_sort( $coll, $arr );
var_export( $arr );
?>

上面的示例将输出

array (
  0 => 'ao',
  1 => 'Ao',
  2 => 'aò',
)
array (
  0 => 'aò',
  1 => 'Ao',
  2 => 'ao',
)

参见

添加备注

用户贡献的备注

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