Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Str_replace i problem z polskimi znakami
mefistofeles
post
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


  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' (IMG:style_emoticons/default/exclamation.gif) !

Whats the fuck (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował mefistofeles 15.03.2010, 18:42:05
Go to the top of the page
+Quote Post
MateuszS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post
mefistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Nie wywala errora, w przykłądzie zjadłem cudzysłów jednak jak mówię nie zamienia mi polskich znaków...
Go to the top of the page
+Quote Post
MateuszS
post
Post #4





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mefistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


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. ?>
Go to the top of the page
+Quote Post
athei
post
Post #6





Grupa: Zarejestrowani
Postów: 389
Pomógł: 141
Dołączył: 11.04.2009

Ostrzeżenie: (0%)
-----


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ź');
Go to the top of the page
+Quote Post
lobopol
post
Post #7





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


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);


Ten post edytował lobopol 15.03.2010, 19:27:46
Go to the top of the page
+Quote Post
mefistofeles
post
Post #8





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


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 :/
Go to the top of the page
+Quote Post
lobopol
post
Post #9





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Sprawdź najlepiej kodowanie bazy, to co podałem powinno działać z kodowaniem iso, utf i win
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie prościej...

  1. $x = iconv(UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $x);
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 07:14