Dutch PHP Conference 2025 - Call For Papers

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.

Прогляньте також

add a note

User Contributed Notes 1 note

up
1
erik at eldata dot se
3 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