Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zamiana znakow
Forum PHP.pl > Forum > PHP
wicc
Chce zamienic znaki diaktryczne za pomoca polecenia preg_replace w funkcji:

  1. <?
  2. function noPl($str) {
  3. $patterns[0] = '/±/';
  4. $patterns[1] = '/ˇ/';
  5. $patterns[2] = '/ć/';
  6. $patterns[3] = '/Ć/';
  7. $patterns[4] = '/ę/';
  8. $patterns[5] = '/Ę/';
  9. $patterns[6] = '/ł/';
  10. $patterns[7] = '/Ł/';
  11. $patterns[8] = '/ó/';
  12. $patterns[9] = '/Ó/';
  13. $patterns[10] = '/ń/';
  14. $patterns[11] = '/Ń/';
  15. $patterns[12] = '/¶/';
  16. $patterns[13] = '/¦/';
  17. $patterns[14] = '/ż/';
  18. $patterns[15] = '/Ż/';
  19. $patterns[16] = '/Ľ/';
  20. $patterns[17] = '/¬/';
  21. $replacements[0] = 'a';
  22. $replacements[1] = 'A';
  23. $replacements[2] = 'c';
  24. $replacements[3] = 'C';
  25. $replacements[4] = 'e';
  26. $replacements[5] = 'E';
  27. $replacements[6] = 'l';
  28. $replacements[7] = 'L';
  29. $replacements[8] = 'o';
  30. $replacements[9] = 'O';
  31. $replacements[10] = 'n';
  32. $replacements[11] = 'N';
  33. $replacements[12] = 's';
  34. $replacements[13] = 'S';
  35. $replacements[14] = 'z';
  36. $replacements[15] = 'Z';
  37. $replacements[16] = 'z';
  38. $replacements[17] = 'Z';
  39.  
  40. return preg_replace($patterns, $replacements, $str);
  41. }
  42. ?>


nizej w kodzie wywoluje:

  1. <?
  2. echo $dozamiany=$_POST['nazwa'];
  3. echo noPl($dozamiany);
  4. ?>


i otrzymuje tekst niezmieniony... problem pojawia sie TYLKO kiedy do funkcji noPl przesylam noPl($...) a nie noPl("....")
b_chmura
  1. <?php
  2. function noPl($tekst)
  3. {
  4.  $tekst = strtr($tekst, "ĘÓˇ¦ŁŻ¬ĆŃęó±¶łżĽćń", "EOASLZXCNeoaslzxcn");
  5. }
  6. ?>


mogłem się siekn±ć przy literkach tongue.gif ale chyba s± wszystkie
tiraeth
Wykorzystując iconv. Dzięki temu zamieni wszystkie znaczki łacińskie na ASCII.
  1. <?php
  2. function noPl($string) {
  3.  return str_replace("'", '', iconv('UTF-8', 'US-ASCII//TRANSLIT', str_replace("'", '&'.'#39;', $string)));
  4. }
  5. ?>

Oczywiście UTF-8 zamień na ISO-8859-2 lub CP1250, w zależności od tego, w jakim kodowaniu prześlesz tekst do funkcji.
wicc
b_chmura, efekt jest ten sam co opisalem... niestety zamienia tylko gotowy tekst a nie ten przesylany w $_POST['nazwa'].

tiraeth, dzieki winksmiley.jpg dziala!
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.