Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][utf8]Przechodzenie po kolejnych znakach, Jak przejść przez kolejne znaki stringa?
ocochodzi
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
--gox--
post
Post #2





Goście







http://pl2.php.net/manual/pl/function.mb-substr.php
Go to the top of the page
+Quote Post
ocochodzi
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 2
Dołączył: 27.02.2007

Ostrzeżenie: (0%)
-----


Dziękuję za odpowiedź ale:

Cytat(-gox- @ 31.10.2008, 21:50:37 ) *


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...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 16:53