PHP 8.4.2 Released!

Collator::compare

collator_compare

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

Collator::compare -- collator_compareCompare two Unicode strings

说明

面向对象风格

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

过程化风格

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

Compare two Unicode strings according to collation rules.

参数

object

Collator object.

string1

The first string to compare.

string2

The second string to compare.

返回值

Return comparison result:

  • 1 if string1 is greater than string2 ;

  • 0 if string1 is equal to string2;

  • -1 if string1 is less than string2 .

Returns false on failure.

警告

此函数可能返回布尔值 false,但也可能返回等同于 false 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

示例

示例 #1 collator_compare() example

<?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 is greater than s2\n";
} else if(
$res < 0 ) {
echo
"s1 is less than s2\n";
} else {
echo
"s1 is equal to s2\n";
}
?>

以上示例会输出:


s1 is greater than s2

示例 #2 Comparing strings without diacritics or case-sensitivity

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

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

以上示例会输出:


The same

This example instructs the collator to compare with only taking the base characters into account. The documentation for Collator->setStrength() explains the different strengths.

参见

添加备注

用户贡献的备注 1 note

up
1
erik at eldata dot se
4 years ago
The Collator class with method compare does what the non existing mb_strcmp, mb_strcasecmp, mb_strnatcmp and mb_strnatcasecmp would do for multibyte strings (UTF8) - but better! :-)

For "case": the Collator is case insensitive due to Collator::CASE_FIRST defaults to Collator::OFF, but can be changed with method setAttribute.

For "nat" (natural sort order for numbers): use method setAttribute with Collator::NUMERIC_COLLATION and Collator:ON to enable.
To Top