Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Brak polskich liter(niektorych) po zabawie ze stringiem
Forum PHP.pl > Forum > Przedszkole
swmikolaj21
Tekst wpisywany przez uzytkownika w input typu textarea:
  1. <?php
  2. $opis_tabl = str_word_count($opis, 1);
  3. $opis="";
  4. for ($i = 0; $i < count($opis_tabl); ++$i) {
  5. $wyraz=$opis_tabl[$i];
  6.  
  7. if (strlen($wyraz)>40) {
  8.  $ile_liter=strlen($wyraz);
  9.  $a=$ile_liter-40;
  10.  $wyraz="..." .substr($wyraz, $a);
  11. }
  12. $opis.=$wyraz . ' ';
  13. }
  14. ?>

Po przejsciu tego skryptu ktory ma chronic przed zbyt dlugimi ciagami znakow, ktore moglyby rozwalic layout, zamiast liter np. ł, ć ,znaku =, ź i kilku innych pojawia się puste miejsce (spacja). Czy ktos może mi powiedzieć dlaczego taki się dzieje? Coś jakby z kodowaniem znaków było nie tak. Dodam, że sprawdziłem ten skrpyt w osobnym pliku także to gdzieś w tym obszarze jest wina.


Pozdrawiam i Liczę na Pomoc
mariuszn3
Do operacji na stringach gdzie występują polskie znaki, powinenieś używać funkcji wchodzących w skład rozszerzenia mbstring (multi byte string). Czyli zamiast strlen() używać mbstrlen() itd. Na pewno tak jest jak używasz kodowania utf-8 (niestety dopiero php6 będzie natywnie obsługiwało unicode).. W utf-8 wszystkie polskie znaczki zajmują dwa razy tyle miejsca co standardowe litery i wtedy strlen() czy substr() nie działają poprawnie. Możliwe, że przy kodowaniu iso-8859-2 (jako, że to po prostu inna tablica i nie ważne czy polski, każdy znak zajmuje tyle samo bitów) można korzystać z tych tradycyjnych funkcji ale nie mam pewności..
swmikolaj21
bardzo możliwe, że tu tkwi problem, jednak uzycie mb_string() nie zmieniło nic.... Jak ustawić to kodowanie na so-8859-2? Kodowanie strony jest ustawione w matatagach na taka wartosc....
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.