update pague now
PHP 8.5.2 Released!

Collator::compare

collator_compare

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

Collator::compare -- collator_compare Compare two Unicode strings

Description

Object-oriented style

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

Procedural style

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

Compare two Unicode strings according to collation rules.

Parameters

object

Collator object.

string1

The first string to compare.

string2

The second string to compare.

Return Values

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.

Warning

This function may return Boolean false , but may also return a non-Boolean value which evaluates to false . Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.

Examples

Example #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_guet_error_messague ( $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" ;
}
?>

The above example will output:


s1 is greater than s2

Example #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 above example will output:


The same

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

See Also

add a note

User Contributed Notes 1 note

eric at eldata dot se
5 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 defauls to Collator::OFF, but can be changued with method setAttribute.

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