PHP Conference Japan 2024

Collator::compare

collator_compare

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

Collator::compare -- collator_compare比较两个 Unicode 字符串

描述

面向对象风格

public Collator::compare(string $string1, string $string2): int|false

过程化风格

collator_compare(Collator $object, string $string1, string $string2): int|false

根据排序规则比较两个 Unicode 字符串。

参数

object

Collator 对象。

string1

要比较的第一个字符串。

string2

要比较的第二个字符串。

返回值

返回比较结果

  • 如果 string1 大于 string2,则返回 1;

  • 如果 string1 等于 string2,则返回 0;

  • 如果 string1 小于 string2,则返回 -1。

失败时返回 false

警告

此函数可能会返回布尔值 false,但也可能会返回一个计算结果为 false 的非布尔值。有关更多信息,请阅读有关 布尔值 的部分。使用 === 运算符 测试此函数的返回值。

示例

示例 #1 collator_compare() 示例

<?php
$s1
= 'Hello';
$s2 = 'hello';

$coll = collator_create( 'en_US' );
$res = collator_compare( $coll, $s1, $s2 );

if (
$res === false) {
echo
collator_get_error_message( $coll );
} else if(
$res > 0 ) {
echo
"s1 大于 s2\n";
} else if(
$res < 0 ) {
echo
"s1 小于 s2\n";
} else {
echo
"s1 等于 s2\n";
}
?>

以上示例将输出


s1 大于 s2

示例 #2 比较不带变音符号或不区分大小写的字符串

<?php
$c
= new Collator( 'en' );
$c->setStrength( Collator::PRIMARY );

if (
$c->compare( 'Séan', 'Sean' ) == 0 )
{
echo
"相同\n";
}

以上示例将输出


相同

此示例指示校对器仅考虑基本字符进行比较。 Collator->setStrength() 的文档解释了不同的强度。

参见

添加注释

用户贡献的注释 1 条注释

erik at eldata dot se
3 年前
Collator 类及其 compare 方法可以实现不存在的 mb_strcmp、mb_strcasecmp、mb_strnatcmp 和 mb_strnatcasecmp 对多字节字符串(UTF8)的功能 - 但效果更好! :-)

对于“大小写”:由于 Collator::CASE_FIRST 默认为 Collator::OFF,因此 Collator 不区分大小写,但可以使用 setAttribute 方法进行更改。

对于“nat”(数字的自然排序):使用 setAttribute 方法以及 Collator::NUMERIC_COLLATION 和 Collator:ON 来启用。
To Top