Ist es möglich, ein Array mit Unicode/UTF-8-Zeichen in PHP mit einem natürlichen Ordnungsalgorithmus zu sortieren? Zum Beispiel (die Reihenfolge in diesem Array richtig geordnet):Natürlicher Sortieralgorithmus in PHP mit Unterstützung für Unicode?
$array = array
(
0 => 'Agile',
1 => 'Ágile',
2 => 'Àgile',
3 => 'Âgile',
4 => 'Ägile',
5 => 'Ãgile',
6 => 'Test',
);
Wenn ich versuche, mit asort ($ array) bekomme ich folgendes Ergebnis:
Array
(
[0] => Agile
[6] => Test
[2] => Àgile
[1] => Ágile
[3] => Âgile
[5] => Ãgile
[4] => Ägile
)
Und mit natsort ($ array):
Array
(
[2] => Àgile
[1] => Ágile
[3] => Âgile
[5] => Ãgile
[4] => Ägile
[0] => Agile
[6] => Test
)
Wie kann ich eine Funktion implementieren, die das korrekte Ergebnis liefert, um (0, 1, 2, 3, 4, 5, 6) unter PHP 5? Alle Multi-Byte-String-Funktionen (mbstring, iconv, ...) sind auf meinem System verfügbar.
EDIT: Ich möchte Natsort() die Werte, nicht die Schlüssel - der einzige Grund, warum ich explizit die Schlüssel definieren (und mit asort() statt sort()) ist die Suche erleichtern heraus, wo die Sortierung von Unicode-Werten ging schief.
Klingt nach dem, was Sie wirklich brauchen, ist der Unicode Collation Algorithm (UCA). Ich habe eine Perl-Demonstration davon [in dieser Antwort] (http://stackoverflow.com/questions/1097908/how-do-i-sort-unicode-strings-alphabetically-in-python/5024116#5024116), wo ich Stellen Sie eine shell-callable-Version für diejenigen zur Verfügung, die möglicherweise keine richtige Bibliothek zum Anrufen haben. Vielleicht hilft das auch hier. – tchrist
@tchrist: UCA ist, was ich suche, ich werde Ihre Antwort ein wenig näher betrachten, danke für die Köpfe hoch! ;) –