![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
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. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 15:17 |