![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 2 Dołączył: 27.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Głupia sprawa. Prosta rzecz a nie wiem jak ją rozwiazać...
String w kodowaniu 8 bitowym można indeksować jak tablicę. Nie jest problemem odwoływanie się do n-tego znaku w stringu. A jak się do niego odwołać w stringu zakodowanym w utf-8? Przypuszczam, że prostego odwołania do n-tego znaku nie ma, bo długości kodów znaków są zmienne w utf8. Ale mniejsza z tym. Wystarczy mi jakiś sposób na pobieranie kolejnych znaków ze stringa zakodowanego w utf8. Pogooglałem i jak na złość znalazłem temat na stronie Włodzimierza Gajdy. Bardzo fajna strona, kiedyś tam sobie sporo czytałem, ale okazało się, że zmieniła formułę na bardziej komercyjną... Będę wdzięczny za naprowadzenie. Z tego co wyczytałem o utf8, to napisanie takiej procedurki w C byłoby raczej proste. No, ale w PHP takich rzeczy raczej sie nie koduje, a ja nie potrafię znaleźć gotowca (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) |
|
|
![]() |
--gox-- |
![]()
Post
#2
|
Goście ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 2 Dołączył: 27.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za odpowiedź ale:
Jak (mb)substringiem wyciągać podciągi to wiem, ale przypuszczam, ze w utf8 ta procedurka musi przejść przez cały string aż do wycinanego elementu (aby wiedzieć gdzie są znaki o odpowiednim indeksie). Zatem jeśli chce sobie przeparsować dużego stringa to będę miał złożoność kwadratową a nie liniową. tzn. przejście po 1 znaku, po 2, po 3...po N, suma 1+2+3...=O(N^2) (za każdym razem mb-substr szuka od początku). Zrobię sobie testy wydajnościowe żeby się upewnić. Na razie to taka spekulacja w oparciu o zastanawianie się skąd mb_substr ma wiedzieć gdzie zaczyna się np. 345 znak. Polskie znaki...Ale ja chce mieć unicode. Gdyby to była sprawa polskich znaków, to bym sobie przekonwertował na iso 8859-2 i na tym parsował. Tak sobie teraz myślę, że może są jeszcze kodowania unicode oparte o kody stałej długości i nasz wspaniały php umożliwia na nie konwersje... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 16:53 |