GAJDAW


MOJE KSIĄŻKI

Książka pt. Git. Recipes
Książka pt. Git. Rozproszony system kontroli wersji
Książka pt. PhpStorm Starter
Książka pt. Symfony w przykładach
Książka pt. GIMP. Praktyczne projekty. Wydanie II
Książka pt. PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych
Książka pt. PHP. Praktyczne projekty

PROGRAMY

1 2 3


Porada: przetwarzanie napisów utf-8 znak po znaku

Włodzimierz Gajda

3. Przetwarzanie napisu kodowanego utf-8

Jeśli w skrypcie PHP umieścisz napis:

$ogonki = 'ąćęłńóśźżĄĆĘŁŃÓŚŹŻ';

a plik zakodujesz w utf-8, to pętla przetwarzająca napis litera po literze:

$dl = strlen($ogonki);
for ($i = 0; $i < $dl; $i++) {
    echo $ogonki[$i] . '<br />';
}

będzie błędna. Funkcja strlen() zwróci liczbę bajtów a nie liter. echo będzie drukowało poszczególne bajty, a nie litery.

W miejsce strlen() należy użyć mb_strlen(), zaś i-tą literę uzyskamy wywołując funkcję mb_substr():

$ogonki = 'ąćęłńóśźżĄĆĘŁŃÓŚŹŻ';

$liczbaliter = mb_strlen($ogonki);

for($i = 0; $i < $liczbaliter; $i++) {
    echo mb_substr($ogonki, $i, 1) . '<br />';
}

Reklama

Szkolenia z Zend Framework 2.0


1 2 3