Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie UTF-8
Forum PHP.pl > Forum > PHP
wNogachSpisz
Witam.
Zadanie jest proste.
Chce posortować tablicę zawierającą kilka elementów.
Elementami są dowone ciągi znaków w dowolnym języku zakodowanie w utf8.
Każdy element może być w innym języku.
Nie wiadomo jakie są to języki.

Wygląda na to że potrzebny jest algorytm UCA (Unicode Collation Algorithm)
http://unicode.org/reports/tr10/

Podobno nowa bibliteka wprowadzona w php 5.3 o nazwie 'ntl' potrafi to zrobić:
http://www.php.net/manual/en/book.intl.php
Konkretnie klasa Collator.
Niestety nie ma za dużo hostingów z php 5.3 - a nawet jeśli są to nie mam zamiaru się przenosić.

Jest też biblioteka PEAR:
http://pear.php.net/package/I18N_UnicodeNormalizer
Podobno za jej pomocą można sortować, niestety nie wiem jak to zrobić, nie potrafie się nią posłużyć, jestem za cieńki.

Czy ktoś zna inne sposoby?
Jeśli nie jesteś w 100% pewna/y, zanim cokolwiek napiszesz w tym temacie przeczytaj http://unicode.org/reports/tr10/ , w przeciwnym razie masz to jak w banku, że dostaniesz ode mnie zjebki :-]

Z góry dziękuję za pomoc.
Załączam gorące pozrowienia.
Crozin
1. Normalizowanie to proces ujednolicania zapisu tekstu w Unikodzie - ta sama litera może zostać w Unikodzie zapisana na kilka sposobów. Z samym sortowaniem niewiele ma to wspólnego, jednakże wpływa na porównywanie jako takie znaków. Normalizowanie tekstu to raczej dobra praktyka, więc możesz wykorzystać Intl do tego.
2. PHP 5.3 ma już dwa i pół roku - spokojnie możesz na nim polegać, szczególnie że większość sensownych narzędzie dla PHP i tak wymaga PHP 5.3+.

W skrócie: użyj Collatora, to najlepsze rozwiązanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.