PHP 8.5.0 Alpha 2 available for testing

Collator::compare

collator_compare

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

Collator::compare -- collator_compareComparar dos strings Unicode

Descripción

Estilo orientado a objetos

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

Estilo procedimental

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

Comparar dos strings Unicode según las reglas de collation.

Parámetros

object

Objeto Collator.

string1

El primer string a comparar.

string2

El segundo string a comparar.

Valores devueltos

Resultados de comparación

  • 1 si string1 es mayor que string2;

  • 0 si string1 es igual a string2;

  • -1 si string1 es menor que string2.

Retorna false en caso de fallo.

Advertencia

Esta función puede retornar false, pero también puede retornar un valor equivalente a false. Por favor, lea la sección sobre los booleanos para más información. Utilice el operador === para probar el valor de retorno exacto de esta función.

Ejemplos

Ejemplo #1 Ejemplo con 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 es mayor que s2\n";
} else if(
$res < 0 ) {
echo
"s1 es menor que s2\n";
} else {
echo
"s1 es igual a s2\n";
}
?>

El ejemplo anterior mostrará :


s1 es mayor que s2

Ejemplo #2 Comparar strings sin diacríticos o sensibilidad a mayúsculas/minúsculas

<?php
$c
= new Collator( 'en' );
$c->setStrength( Collator::PRIMARY );
if (
$c->compare( 'Séan', 'Sean' ) == 0 )
{
echo
"The same\n";
}

El ejemplo anterior mostrará :


The same

Este ejemplo solicita al collator que compare solo teniendo en cuenta los caracteres base. La documentación para Collator->setStrength() explica las diferentes fuerzas.

Ver también

add a note

User Contributed Notes 1 note

up
4
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