(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 1.0.3)
Collator::getSortKey -- collator_get_sort_key — Obtém a chave de ordenação de uma string
Estilo orientado a objetos
Estilo procedural
Retorna a chave de agrupamento de uma string. Chaves de agrupamento podem ser comparadas diretamente ao invés de se comparar strings, mas são específicas de implementação e podem mudar entre versões de biblioteca ICU. Chaver de ordenação geralmente são úteis apenas em bancos de dados ou em outras circunstâncias onde chamadas a funções são extremamente custosas.
Retorna a chave de agrupamento para a string, ou false
em caso de falha.
Esta função pode
retornar o valor booleano false
, mas também pode retornar um valor não booleano que pode ser
avaliado como false
. Leia a seção sobre Booleanos para mais
informações. Use o operador
=== para testar o valor retornado por esta
função.
Exemplo #1 Exemplo de collator_get_sort_key()
<?php
$s1 = 'Hello';
$coll = collator_create('en_US');
$res = collator_get_sort_key($coll, $s1);
echo bin2hex($res);
?>
O exemplo acima produzirá algo semelhante a:
Exemplo #2 Exemplo de Collator::getSortKey() com 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' ],
];
/* Cria o ordenadorr */
$col = new Collator('en');
/* Ordena letras maiúsculas antes de minúsculas */
$col->setAttribute(Collator::CASE_FIRST, Collator::UPPER_FIRST);
/* Usa uma função definida pelo usuário com ordenação, removendo os emojis */
*/
usort(
$data,
function($a, $b) use ($col) {
/* Remove a classe de caracteres 'S' (os símbolos) e espaços em branco
* (com trim) */
$aName = trim(preg_replace('/\p{S}+/u', '', $a['name']));
$bName = trim(preg_replace('/\p{S}+/u', '', $b['name']));
/* Cria a chave de ordenação */
$aKey = $col->getSortKey($aName);
$bKey = $col->getSortKey($bName);
/* Usa a chave de ordenação para sinalizar que elementos são ordenados primeiro */
return $aKey <=> $bKey;
}
);
var_dump($data);
?>
O exemplo acima produzirá algo semelhante a: