Collator::getSortKey

collator_get_sort_key

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 1.0.3)

Collator::getSortKey -- collator_get_sort_keyObtiene la clave de ordenación para una cadena

Descripción

Estilo orientado a objetos

public Collator::getSortKey(string $string): string|false

Estilo por procedimientos

collator_get_sort_key(Collator $object, string $string): string|false

Devuelve la clave de collation para una cadena. Las claves de collation pueden compararse directamente en lugar de cadenas, no obstante son específicas de la implementación y pueden cambiar entre versiones de la biblioteca ICU. Las claves de ordenación son generalmente útiles solo en bases de datos u otras circunstancias donde las llamadas a funciones son extremadamente costosas.

Parámetros

object

Objeto Collator.

string

La cadena desde la cual producir la clave.

Valores devueltos

Devuelve la clave de collation para la cadena, o false en caso de error.

Advertencia

Esta función puede devolver el valor booleano false, pero también puede devolver un valor no booleano que se evalúa como false. Por favor lea la sección sobre Booleanos para más información. Use el operador === para comprobar el valor devuelto por esta función.

Ejemplos

Ejemplo #1 Ejemplo collator_get_sort_key()

<?php
$s1
= 'Hello';

$coll = collator_create('en_US');
$res = collator_get_sort_key($coll, $s1);

echo
bin2hex($res);
?>

El resultado del ejemplo sería algo similar a:


3832404046010901dc08

Ejemplo #2 Collator::getSortKey() : ejemplo con usort()

<?php
$data
= [
[
'name' => '🇳🇱 Derick Rethans', 'linked_account' => 'https://phpc.social/users/derickr' ],
[
'name' => 'Elephpant', 'linked_account' => 'https://phpc.social/phpc' ],
[
'name' => '🇫🇷 Marcus Bointon', 'linked_account' => 'https://phpc.social/users/Synchro' ],
];

/* Crear el collator */
$col = new Collator('en');

/* Ordenar letras mayúsculas antes que minúsculas */
$col->setAttribute(Collator::CASE_FIRST, Collator::UPPER_FIRST);

/* Utilizar una función definida por el usuario con sort, que elimina los emojis */
usort(
$data,
function(
$a, $b) use ($col) {
/* Eliminar la clase de caracteres 'S' (Símbolos) y los espacios
* (con trim) */
$aName = trim(preg_replace('/\p{S}+/u', '', $a['name']));
$bName = trim(preg_replace('/\p{S}+/u', '', $b['name']));

/* Crear la clave de ordenación */
$aKey = $col->getSortKey($aName);
$bKey = $col->getSortKey($bName);

/* Utilizar la clave de ordenación para determinar el orden de los elementos */
return $aKey <=> $bKey;
}
);

var_dump($data);
?>

El resultado del ejemplo sería algo similar a:


array(3) {
[0] =>
array(2) {
'name' =>
string(25) "🇳🇱 Derick Rethans"
'linked_account' =>
string(33) "https://phpc.social/users/derickr"
}
[1] =>
array(2) {
'name' =>
string(9) "Elephpant"
'linked_account' =>
string(24) "https://phpc.social/phpc"
}
[2] =>
array(2) {
'name' =>
string(25) "🇫🇷 Marcus Bointon"
'linked_account' =>
string(33) "https://phpc.social/users/Synchro"
}
}

Ver también