Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: utf-8, polskie znaki, substr ...
Forum PHP.pl > Forum > PHP
eccocce
Witam,
Potrzebowałem na stronę skracacza tekstu - tzn. z wersji wejściowej np. 200 znaków, wycina pierwsze 50 wg. różnych zależności, ale mniejsza o to. Posłużyłem się funkcją substr i dzisiaj zauważyłem na stronie krzaczki (a dokładnie jeden). Cała treść na stronie jest kodowana w UTF-8, czyli każdy polski znak jest kodowany przy użyciu 2 bajtów (inne znaki po 1 bajcie).
Krzak był wynikiem skracania. Przykładowo:

  1. header('Content-Type: text/html; charset=utf-8');
  2.  
  3. $var = 'żaba';
  4.  
  5. for($i=0; $i<strlen($var); $i++)
  6. {
  7. echo $i.'. '.$var[$i].'<br/>';
  8. }
  9.  
  10. echo $var;


żaba w UTF-8 ma długość (strlen) 5, a nie 4. Powyższy kod spowoduje, że dwa pierwsze znaki, odpowiadające kodowaniu litery "ż" będą krzakami. Tak substr trafiała mi "w środek" polskiego znaku i stąd krzak...

Tak więc mam istotę problemu, ale teraz jak sobie z tym radzić? Chciałbym zliczać polskie znaki jako 1 znak i przede wszystkim chciałbym pozbyć się ryzyka, że substr trafi mi "w środek" jakiegoś 2 bajtowego znaku. Doradźcie coś smile.gif
czachor
mb_substr oraz mb_strlen - zajrzyj generalnie do http://pl.php.net/manual/pl/ref.mbstring.php
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.