Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z polskimi znakami
unw
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.06.2008

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


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





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


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


Ten post edytował kreatiff 1.10.2014, 10:45:30
Go to the top of the page
+Quote Post
Turson
post
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


strtr - zrób tablicę zamiany.
Go to the top of the page
+Quote Post
unw
post
Post #4





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.06.2008

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


Jak to dokładniej zrobić? próbowałem ale niestety dalej nie zamienia.
Go to the top of the page
+Quote Post
kreatiff
post
Post #5





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


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





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.06.2008

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


Troszkę pokombinowałem, dziękuję za cenną podowiedź. Wszystko działa teraz jak należy.
Pozdrawiam
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 07:38