collator_create

funkcja

Tworzy obiekt Collator do sortowania ciągów zgodnie z regułami lokalizacji (np. polskie 'ą' po 'a', nie po 'z'). Wymaga rozszerzenia intl.

collator_create(string $locale): ?Collator

collator_create tworzy obiekt Collator, który sortuje i porównuje ciągi znaków zgodnie z zasadami danej lokalizacji. Standardowe sort() i strcmp() korzystają z kolejności bajtów, przez co polskie litery (ą, ć, ę, ł, ń, ó, ś, ź, ż) trafiają za zCollator z locale 'pl_PL' umieszcza je zgodnie z polskim alfabetem.

Funkcja zwraca null przy nieprawidłowym $locale. Wymaga rozszerzenia intl.

<?php
declare(strict_types=1);

$coll = collator_create('pl_PL');

// Sortowanie tablicy — w miejscu
$slowa = ['żaba', 'ach', 'ąkacja', 'być', 'ala', 'śpiew', 'ćma', 'ząb'];
collator_sort($coll, $slowa);
echo implode(', ', $slowa);
// ach, ala, ąkacja, być, ćma, śpiew, ząb, żaba — polska kolejność alfabetyczna

// Porównanie dwóch ciągów
// zwraca < 0, 0 lub > 0 (jak strcmp)
$wynik = collator_compare($coll, 'ą', 'b');
echo $wynik; // wartość ujemna: 'ą' jest przed 'b' w pl_PL

// Sortowanie natywne PHP (bajty) — błędna kolejność
$slowa2 = ['żaba', 'ach', 'ąkacja'];
sort($slowa2);
echo implode(', ', $slowa2); // ach, ąkacja, żaba — bajty: ą (0xC4…) < ż (0xC5…), ą trafia przed ż