Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Brak polskich liter(niektorych) po zabawie ze stringiem
swmikolaj21
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 11.05.2005

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


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

Ten post edytował swmikolaj21 11.06.2006, 12:41:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
mariuszn3
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

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


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





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 11.05.2005

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


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

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

 



RSS Aktualny czas: 21.08.2025 - 02:31