Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: GD polskie znaki
Forum PHP.pl > Forum > PHP
toczek
witam.

Walcze juz z tym chwile i nie mam pomyslu to wrzucam tutaj moze ktos sie spotkal.
Problem polega na tym iz generuje obrazki z dynamicznym tekstem i w tym tekscie moga znalezc sie polskie znaki. (Czcionka zawiera polskie znaki).

moze przyklad:
  1. <?php
  2.  
  3. imagettftext($resImg,20,0,10,30,$intBlack,$strFontPath,'abcąśćś');
  4.  
  5. ?>


i takie cos wyrzuci mi poprawny ciag znakow bez zadnych krzakow/prostokatow itd. Plik skryptu kodowany jest w UTF-8.

ale jesli teraz chcialbym zrobic, ze:

  1. <?php
  2.  
  3. imagettftext($resImg,20,0,10,30,$intBlack,$strFontPath,$_GET['text']);
  4.  
  5. ?>


to wyrzuca obrazek z krzakami (w $_GET['text'] sa polskie znaki) angrysmiley.gif ... probowalem z urldecode(), mb_convert_encoding() i podobnymi ale do niczego sensownego nie moge dojsc.
Problem prawdopodobnie wynika z faktu ze w adresie mam np: index.php?text=%c4%85 (co odpowiada jednemu znakowi) ale np.: strlen() zwroci mi "2" ;/ , ale zeby bylo ciekawiej to var_dump($_GET['text']) wyswietla prawidlowo nawet bez zadnego zabiegu ...

ktos ma jakis pomysl jak to rozwiazac ?
ghostdog
Też kiedyś miałem z tym problem.
Polecam funkcje sprawdzic w dokumentacji funkcję iconv()
toczek
oczywiscie najprostsze rozwiazania sa najlepsze ;]
wystarczylo ustawic

  1. <?php
  2.  
  3. mb_internal_encoding('UTF-8');
  4. $strText = trim(strip_tags($_GET['text']));
  5.  
  6. ?>


i potem jak sie przesuwam po literkach dac odpowiedniki mb_* zamiast zwyklych strlen i substr:

  1. <?php
  2.  
  3. for($i=0;$i<mb_strlen($strText);$i++)
  4. {
  5. $strValue = mb_substr($strText,$i,1);
  6. ...
  7. }
  8.  
  9. ?>


dzieki za sugestie ;]
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.