PHP 8.1.0 RC 2 available for testing



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

Collator::compare -- collator_compareCompare two Unicode strings


Objektorientierter Stil

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

Prozeduraler Stil

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

Compare two Unicode strings according to collation rules.



Collator object.


The first string to compare.


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.


Diese Funktion kann sowohl das boolsche false zurückliefern, als auch einen nicht-boolschen Wert, welcher zu false ausgewertet wird. Weitere Informationen entnehmen Sie bitte dem Abschnitt über die boolschen Typen. Benutzen Sie deshalb den === Operator, um den Rückgabewert dieser Funktion zu überprüfen.


Beispiel #1 collator_compare() example

$s2 'hello';

$coll collator_create'en_US' );
$res  collator_compare$coll$s1$s2 );

if (
$res === false) {
collator_get_error_message$coll );
} else if( 
$res ) {
"s1 is greater than s2\n";
} else if( 
$res ) {
"s1 is less than s2\n";
} else {
"s1 is equal to s2\n";

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

s1 is greater than s2

Beispiel #2 Comparing strings without diacritics or case-sensitivity

= new Collator'en' );
$c->setStrengthCollator::PRIMARY );

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

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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.

Siehe auch

add a note add a note

User Contributed Notes 1 note

erik at eldata dot se
9 months 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