Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Str_replace i problem z polskimi znakami
Forum PHP.pl > Forum > Przedszkole
mefistofeles
  1. $tyt2 = str_replace('ć', 'c', $tyt2);
  2. $tyt2 = str_replace('a', 'c', $tyt2);


Pierwsza funkcja nie zamienia polskiego znaku, druga działa bez zarzutu.
Próbowałem w utf8 i ansi o co chodzi ?


Próbowałem jeszcze używać takiej funkcji:

  1. function usun_pl($string) {
  2.  
  3. $string = strtolower($string);
  4. $polskie = array(',', ' - ',' ','ę', 'Ę', 'ó', 'Ó', 'ˇ', '±', '¦', 's', 'ł', 'Ł', 'ż', 'Ż', '¬', 'Ľ', 'ć', 'Ć', 'ń', 'Ń','-',"'","/","?", '"', ":", '¶', '!','.', '&', '&', '#', ';', '[',']','domena.pl', '(', ')', '`', '%', '”', '„', '…');
  5. $miedzyn = array('-','-','-','e', 'e', 'o', 'o', 'a', 'a', 's', 's', 'l', 'l', 'z', 'z', 'z', 'z', 'c', 'c', 'n', 'n','-',"","","","","",'s','','', '', '', '', '', '', '', '', '', '', '', '', '');
  6. $string = str_replace($polskie, $miedzyn, $string);
  7.  
  8. return $string;
  9. }


Ale to z kolei w ogóle wariuje, wyraz 'być' zamienia na: 'by263' exclamation.gif!

Whats the fuck questionmark.gif
MateuszS
Yy, a nie wypluwa ci errora php? Bo nie masz jednego cudzysłowia w obu przypadkach

mi taki kod działa
  1. $as = "asdććć";
  2. $tyt2 = str_replace('ć', 'c', $as);
  3. echo $tyt2;
mefistofeles
Nie wywala errora, w przykł±dzie zjadłem cudzysłów jednak jak mówię nie zamienia mi polskich znaków...
MateuszS
możesz pokazać więcej kodu i co zawiera przed zmienieniem zmienna $tyt2? Bo z tego co piszesz to wnioskuje że to jakie¶ czarne dziury.
mefistofeles
Proszę:

  1. <?
  2. function usun_pl($string) {
  3.  
  4. $string = strtolower($string);
  5. $polskie = array(',', ' - ',' ','ę', 'Ę', 'ó', 'Ó', 'ˇ', '±', '¦', 's', 'ł', 'Ł', 'ż', 'Ż', '¬', 'Ľ', 'ć', 'Ć', 'ń', 'Ń','-',"'","/","?", '"', ":", '¶', '!','.', '&', '&amp;', '#', ';', '[',']','domena.pl', '(', ')', '`', '%', '”', '„', '…');
  6. $miedzyn = array('-','-','-','e', 'e', 'o', 'o', 'a', 'a', 's', 's', 'l', 'l', 'z', 'z', 'z', 'z', 'c', 'c', 'n', 'n','-',"","","","","",'s','','', '', '', '', '', '', '', '', '', '', '', '', '');
  7. $string = str_replace($polskie, $miedzyn, $string);
  8.  
  9. return $string;
  10. }
  11.  
  12.  
  13.  
  14.  
  15. $sql = 'SELECT file_name, file_desc FROM `pafiledb_files` WHERE file_catid = '.$ajax_cat.' LIMIT 20;' ;
  16. $resultx = mysql_query($sql);
  17.  
  18. echo '<div style="float:left;background:#000;padding-bottom:10px;color:#000"><div style="float:left;width:202px;"><ul style="margin:0px;padding:0px;margin-left:31px;">';
  19.  
  20.  
  21. if(mysql_num_rows($resultx) > 0) {
  22.  
  23.  
  24. while($row123 = mysql_fetch_assoc($resultx))
  25. {
  26.  
  27.  
  28. $row123['file_desc'] = str_replace('/', ' ', $row123['file_desc']);
  29. $tyt=$row123['file_name'].' - ' .$row123['file_desc'];
  30.  
  31.  
  32. //echo $tyt2;
  33.  
  34.  
  35. $max_length = 28;
  36.  
  37. $new_link = $tyt;
  38. if (strlen($new_link) > $max_length) {
  39. $tyt = substr($new_link, 0, $max_length) . ' (...)';
  40.  
  41. }
  42.  
  43. $tyt2=str_replace('(', ' ', $tyt);
  44. $tyt2=str_replace('(', ' ', $tyt);
  45. $tyt2=str_replace(']', ' ', $tyt);
  46. $tyt2=str_replace(']', ' ', $tyt);
  47. $tyt2=str_replace('', ' ', $tyt2);
  48.  
  49.  
  50. $tyt3=usun_pl($tyt2);
  51. echo $tyt3;
  52. //$tyt2 = str_replace('ć', 'DUPA ', $tyt2);
  53.  
  54.  
  55. //$tyt2=usun_pl($tyt2);
  56.  
  57. echo '<li style="list-style-type: decimal;text-align:left;font-size:11px;font-family:tahoma;color:#fff;"><a target="_blank" href=wyszukaj-'.$tyt2.'/">'
  58. .$tyt3.'</a></li>' ;
  59.  
  60. }
  61.  
  62.  
  63. }
  64.  
  65. echo '</ul></div>';
  66.  
  67.  
  68. ?>
athei
Użyj tej funkcji
Kod
function clearDiacritics($string)
{
  $aReplacePL = array('±' => 'a', 'ę' => 'e', '¶' => 's', 'ć' => 'c', 'ó' => 'o', 'ń' => 'n', 'ż' => 'z', 'Ľ' => 'z', 'ł' => 'l', 'ˇ' => 'A', 'Ę' => 'E', '¦' => 'S', 'Ć' => 'C', 'Ó' => 'O', 'Ń' => 'N', 'Ż' => 'Z', '¬' => 'Z', 'Ł' => 'L');
  return str_replace(array_keys($aReplacePL), array_values($aReplacePL), $string);
}

echo clearDiacritics('łódĽ');
lobopol
Ja używam czego¶ takiego:
  1. $chars = array(
  2. "\xb9" => "a", "\xa5" => "A", "\xe6" => "c", "\xc6" => "C",
  3. "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
  4. "\xf3" => "o", "\xd3" => "O", "\x9c" => "s", "\x8c" => "S",
  5. "\x9f" => "z", "\xaf" => "Z", "\xbf" => "z", "\xac" => "Z",
  6. "\xf1" => "n", "\xd1" => "N",
  7.  
  8. "\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C",
  9. "\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L",
  10. "\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S",
  11. "\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z",
  12. "\xc5\x84" => "n", "\xc5\x83" => "N",
  13.  
  14. "\xb1" => "a", "\xa1" => "A", "\xe6" => "c", "\xc6" => "C",
  15. "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
  16. "\xf3" => "o", "\xd3" => "O", "\xb6" => "s", "\xa6" => "S",
  17. "\xbc" => "z", "\xac" => "Z", "\xbf" => "z", "\xaf" => "Z",
  18. "\xf1" => "n", "\xd1" => "N",
  19. );
  20.  
  21. $text= strtr($text, $chars);
mefistofeles
Funkcja Athei też mi nie działa - ogonki pozostaj±.
Tak jakby dane pobierane z bazy były w jakim¶ innym kodowaniu, ale wszystko wygl±da na oko normalnie.

Ja to mam szczę¶cie do jakich¶ anomalii :/
lobopol
SprawdĽ najlepiej kodowanie bazy, to co podałem powinno działać z kodowaniem iso, utf i win
erix
A nie pro¶ciej...

  1. $x = iconv(UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $x);
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.