Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]polskie znaki
Forum PHP.pl > Forum > Przedszkole
Wasiqs
cóż może mi ktoś to wyjaśnić?

  1. <?php
  2. $a = 'Żaba';
  3. echo str_replace('Ż', 'Z', $a[0]);
  4. ?>


wynik: ?

czemu i jak temu zaradzić?
nowotny
Poszukać i poczytać na tym forum o kodowaniach plików php i stron... było milion razy z milionem gotowych rozwiązań...
Wasiqs
baza - UTF - 8
plik - UTF - 8
kodowanie strony UTF - 8

wiec co nie tak?

//edit:
sprawdzałem osobno i jest ok
przy pobraniu z bazy jest źle

Metoda porównywania napisów dla bazy i tabel: utf8_polish_ci
a przed wybraniem bazy
  1. <?php
  2. mysql_unbuffered_query('SET CHARSET utf8');
  3. ?>
nowotny
  1. <?php
  2. $a = 'Żaba';
  3. echo str_replace('Ż', 'Z', $a);
  4. ?>

U mnie działa...
Wasiqs
to może wyjaśnię dokładniej.

pobieram z bazy imię i nazwisko. rozbijam je korzystając z explode() i usuwam polskie znaki.

'Łukasz Grabarz'

  1. <?php
  2. function noPL($str)
  3. {
  4. $a = array( 'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń', 'ę', 'ó', 'ą', 'ś', 'ł', 'ż', 'ź', 'ć', 'ń' );
  5. $b = array( 'E', 'O', 'A', 'S', 'L', 'Z', 'Z', 'C', 'N', 'e', 'o', 'a','s', 'l', 'z', 'z', 'c', 'n' );
  6.  
  7. return $str = str_replace($a,$b,$str);
  8. }
  9.  
  10. $imie = explode(' ', $zawodnik);
  11. echo noPL($imie[0][0]).'. '.$imie[1];
  12. ?>


otrzymuje
Cytat
?. Grabarz

zamiast
Cytat
L. Grabarz


testowałem też

  1. <?php
  2. $imie = explode(' ', $zawodnik);
  3. echo $imie[0][0].'. '.$imie[1];
  4. ?>


efekt ten sam
l0ud
Cytat z wiki:
Cytat
Znaki alfabetów niełacińskich zajmują po 2 bajty zamiast jednego w kodowaniach narodowych.

http://pl.wikipedia.org/wiki/UTF-8

  1. <?php
  2. $a = 'Żaba';
  3. echo str_replace('Ż', 'Z', $a[0].$a[1]);
  4. ?>


Litera Ż zajmuje 2 bajty.
Wasiqs
Wielkie dzięki

pozdrawiam Wasiqs
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.