Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z polskimi znakami
Forum PHP.pl > Forum > PHP
unw
Witam. Posiadam ściągnięty skrypt blogowy ktory opiera się o pliki txt.

Problem pojawia się przy pisaniu postów - Dodają wpis z polskimi znakami ŚĆŹ itd w url postu również występuje śćź. W jaki sposób mógłbym zastąpić scz?

jedna funkcja: odpowiada za usuwanie znaków takich jak: " ! itd
  1. // Clean text for URL
  2. public static function clean_url($text, $spaces='-', $translit=false)
  3. {
  4. // Delete characters
  5. $text = str_replace(array("“", "”", "!", "*", "'", """, "(", ")", ";", ":", "@", "&amp", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]", "|"),'',$text);
  6.  
  7. // Translit
  8. if($translit!=false)
  9. {
  10. $text = str_replace(array_keys($translit),array_values($translit),$text);
  11. }
  12.  
  13. // Replace spaces by $spaces
  14. $text = str_replace(' ',$spaces,$text);
  15.  
  16. // Replace double -- by -
  17. $text = str_replace(array('---','--'),'-',$text);
  18.  
  19.  
  20.  
  21.  
  22.  
  23. // Make a string lowercase
  24. $text = self::str2lower($text);
  25.  
  26. return $text;
  27. }


natomiast druga:
  1. public static function random_text($length)
  2. {
  3. $characteres = "1234567890abcdefghijklmnopqrstuvwxyz!@#%^&*";
  4. $text = '';
  5. for($i=0; $i<$length; $i++)
  6. {
  7. $text .= $characteres{rand(0,41)};
  8. }
  9. return $text;
  10. }


w jaki sposób do tej pierwszej dopisać aby nie usuwało mi tylko zastępowało np Ó na o, Ź na Z itd?
kreatiff
Pierwsza funkcja nie usuwa polskich liter. Musi to robić, np. str2lower, albo coś innego.
Ale domyśliłem się słusznie, że ta metoda pozwala na zdefiniowanie tablicy znaków do wymiany.
Interesuje Cię $translit.
Przekaż do metody clean_url tablicę ze znakami, które mają być podmienione i już. W indeksach daj znaki do zamiany, a w wartościach na co ma zamienić.

  1. $translit = array(
  2. 'ą'=>'a',
  3. 'ć='=>'c'
  4. ...
  5. )
Turson
strtr - zrób tablicę zamiany.
unw
Jak to dokładniej zrobić? próbowałem ale niestety dalej nie zamienia.
kreatiff
Tam gdzie w kodzie masz nazwa_metody::clean_url($text, $spaces='-'), musisz dodać 3 argument, którym jest wspomniana tablica $translit, czyli nazwa_metody::clean_url($text, $spaces='-', $translit). Oczywiśćie uprzednio definiując zawartość $translit, albo wpakować całą tablicę po prostu w argument (ale to będzie niełądnie wyglądało wink.gif).
Metoda clean_url może przyjąć 2 albo 3 argumenty, gdzie domyślnie ten trzeci, z tablicą do własnych podmian jest nieużywany. A my go po prostu chcemy wykorzystać.

Możliwe, że to w samym panelu CMSa można to rozwiązać, ale to już pozostaje w kwestii przeszukania go pod tym kątem. My tu możemy tylko strzelać.
unw
Troszkę pokombinowałem, dziękuję za cenną podowiedź. Wszystko działa teraz jak należy.
Pozdrawiam
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.