Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuwanie polskich znakow
Forum PHP.pl > Forum > Przedszkole
Octobus
Mam skrypt który usuwa polskie znaki:

  1. function usun_polskie_znaki($tekst){
  2. $tabela = Array(
  3. //WIN
  4. "\xb9" => "a", "\xa5" => "A", "\xe6" => "c", "\xc6" => "C",
  5. "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
  6. "\xf3" => "o", "\xd3" => "O", "\x9c" => "s", "\x8c" => "S",
  7. "\x9f" => "z", "\xaf" => "Z", "\xbf" => "z", "\xac" => "Z",
  8. "\xf1" => "n", "\xd1" => "N",
  9. //UTF
  10. "\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C",
  11. "\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L",
  12. "\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S",
  13. "\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z",
  14. "\xc5\x84" => "n", "\xc5\x83" => "N",
  15. //ISO
  16. "\xb1" => "a", "\xa1" => "A", "\xe6" => "c", "\xc6" => "C",
  17. "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
  18. "\xf3" => "o", "\xd3" => "O", "\xb6" => "s", "\xa6" => "S",
  19. "\xbc" => "z", "\xac" => "Z", "\xbf" => "z", "\xaf" => "Z",
  20. "\xf1" => "n", "\xd1" => "N");
  21.  
  22. return strtr($tekst,$tabela);
  23. }


Radzi sobie z tym perfekcyjnie, ale daje krzak przy słowie
Kod
ze Australia

Wynikiem dzialania funkcji na to slowo jest:
Kod
ze ​​Australia


Probowalem to usunac przez str_replace ale nie dalo rady ;/
tolomei
Witaj.

Uruchom sobie poniższy kod, w linii 51. wpisz tekst, który konwertuje się źle.
Zrób posta z tym co Ci się wyświetli.

  1. <?php
  2. $tabela = Array(
  3. //WIN
  4. "\xb9" => "a", "\xa5" => "A", "\xe6" => "c", "\xc6" => "C",
  5. "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
  6. "\xf3" => "o", "\xd3" => "O", "\x9c" => "s", "\x8c" => "S",
  7. "\x9f" => "z", "\xaf" => "Z", "\xbf" => "z", "\xac" => "Z",
  8. "\xf1" => "n", "\xd1" => "N",
  9. //UTF
  10. "\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C",
  11. "\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L",
  12. "\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S",
  13. "\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z",
  14. "\xc5\x84" => "n", "\xc5\x83" => "N",
  15. //ISO
  16. "\xb1" => "a", "\xa1" => "A", "\xe6" => "c", "\xc6" => "C",
  17. "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
  18. "\xf3" => "o", "\xd3" => "O", "\xb6" => "s", "\xa6" => "S",
  19. "\xbc" => "z", "\xac" => "Z", "\xbf" => "z", "\xaf" => "Z",
  20. "\xf1" => "n", "\xd1" => "N"
  21. );
  22. function stringTest($spre) {
  23. global $tabela;
  24.  
  25. $spost = strtr($spre, $tabela);
  26. $cpre = strlen($spre);
  27. $cpost = strlen($spost);
  28. $apre = array();
  29. $apost = array();
  30. $hex = array();
  31.  
  32. for ($i=0; $i < $cpre; $i++) {
  33. $apre[] = array(
  34. 'hex' => dechex(ord($spre[$i])),
  35. 'ent' => '&#x'.dechex(ord($spre[$i])).';'
  36. );
  37. }
  38. for ($i=0; $i < $cpost; $i++) {
  39. $apost[] = array(
  40. 'hex' => dechex(ord($spost[$i])),
  41. 'ent' => '&#x'.dechex(ord($spost[$i])).';'
  42. );
  43. }
  44. $hex = array(
  45. 'pre' => $apre,
  46. 'post' => $apost
  47. );
  48. return $hex;
  49. }
  50. echo '<pre>';
  51. print_r(stringTest('tu wpisz tekst'));
  52. echo '</pre>';


Pozdrawiam.
Octobus
Testowany tekst :
Kod
że Australia


Wynik działania funkcji:
  1. (
  2. [pre] => Array
  3. (
  4. [0] => Array
  5. (
  6. [hex] => c5
  7. [ent] => Ĺ
  8. )
  9.  
  10. [1] => Array
  11. (
  12. [hex] => bc
  13. [ent] => ź
  14. )
  15.  
  16. [2] => Array
  17. (
  18. [hex] => 65
  19. [ent] => e
  20. )
  21.  
  22. [3] => Array
  23. (
  24. [hex] => 20
  25. [ent] =>
  26. )
  27.  
  28. [4] => Array
  29. (
  30. [hex] => 41
  31. [ent] => A
  32. )
  33.  
  34. [5] => Array
  35. (
  36. [hex] => 75
  37. [ent] => u
  38. )
  39.  
  40. [6] => Array
  41. (
  42. [hex] => 73
  43. [ent] => s
  44. )
  45.  
  46. [7] => Array
  47. (
  48. [hex] => 74
  49. [ent] => t
  50. )
  51.  
  52. [8] => Array
  53. (
  54. [hex] => 72
  55. [ent] => r
  56. )
  57.  
  58. [9] => Array
  59. (
  60. [hex] => 61
  61. [ent] => a
  62. )
  63.  
  64. [10] => Array
  65. (
  66. [hex] => 6c
  67. [ent] => l
  68. )
  69.  
  70. [11] => Array
  71. (
  72. [hex] => 69
  73. [ent] => i
  74. )
  75.  
  76. [12] => Array
  77. (
  78. [hex] => 61
  79. [ent] => a
  80. )
  81.  
  82. )
  83.  
  84. [post] => Array
  85. (
  86. [0] => Array
  87. (
  88. [hex] => 7a
  89. [ent] => z
  90. )
  91.  
  92. [1] => Array
  93. (
  94. [hex] => 65
  95. [ent] => e
  96. )
  97.  
  98. [2] => Array
  99. (
  100. [hex] => 20
  101. [ent] =>
  102. )
  103.  
  104. [3] => Array
  105. (
  106. [hex] => 41
  107. [ent] => A
  108. )
  109.  
  110. [4] => Array
  111. (
  112. [hex] => 75
  113. [ent] => u
  114. )
  115.  
  116. [5] => Array
  117. (
  118. [hex] => 73
  119. [ent] => s
  120. )
  121.  
  122. [6] => Array
  123. (
  124. [hex] => 74
  125. [ent] => t
  126. )
  127.  
  128. [7] => Array
  129. (
  130. [hex] => 72
  131. [ent] => r
  132. )
  133.  
  134. [8] => Array
  135. (
  136. [hex] => 61
  137. [ent] => a
  138. )
  139.  
  140. [9] => Array
  141. (
  142. [hex] => 6c
  143. [ent] => l
  144. )
  145.  
  146. [10] => Array
  147. (
  148. [hex] => 69
  149. [ent] => i
  150. )
  151.  
  152. [11] => Array
  153. (
  154. [hex] => 61
  155. [ent] => a
  156. )
  157.  
  158. )
  159.  
  160. )
tolomei
W tym przypadku nie wystąpiły żadne błędy przy literce A.
Znak wejściowy to \x41, nie jest on podmieniany więc na wyjściu masz to samo.
Z tego wynika, że nie użyłeś tym razem tego samego tekstu, który sprawiał problemy.
prowseed
A nie wystarczy iconv z flagą ASCII//TRANSLIT ?
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.