Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Przyjazne linki
Forum PHP.pl > Forum > Przedszkole
bigbadcompany
Witam,

mam mały problem z przyjaznymi linkami. Otóż gdy tytuł przerabiany jest na przyjazny link zamiast polskich znaków ś ć itd nie ma konwersji z ś=>s rzućcie okiem na tę regułkę. Czy ona jest dobra ? Nie widzę w niej błędów. A jeśli nie regułka to gdzie ten błąd może siedzieć. Jeśli zajdzie potrzeba mogę jeszcze wstawić kawałki kodu które pomogą w detekcji problemu.

http://chybaty.eu/demotywatory/-l-wik-popy...o-o-przez-czk-/ <- tak wygląda link
http://chybaty.eu/demotywatory/zolwik-popy...o-przez-laczke/ <- tak wyglądać powinien

  1. // ----------------------------- seourl()
  2. function seourl_old($url)
  3. {
  4. $trans = array("ą"=>"a","ę"=>"e","ś"=>"s","ż"=>"z","ź"=>"z","ć"=>"c","ń"=>"n","ł"=>"l","ó"=>"o");
  5. $url = strip_tags(mb_convert_case($url, MB_CASE_LOWER, "UTF-8"));
  6. //strtolower z polskimi literkami
  7. $url = trim(strtr($url, $trans));
  8. $url .='$url';
  9. return $url;
  10. //zamienia polskie literki na literki z kodu ascii
  11. $url = preg_replace('/\s\s+/', '', $url);
  12. //jezeli znajdzie jeden niz wiecej znakow bialych obok siebie, to usuwa go
  13. $url = preg_replace('/[^a-z0-9]+/','-',$url);
  14. //znaki rozne od pozostalych liter ascii i cyfr zmieniamy na znaki przestankowe (myslniki)
  15. return $url;
  16. }


Jak widać w funkcji mam zawartą konwersję polskich znaków na zamienniki. Męczy mnie to już któryś dzień, inaczej nie zwracałbym się z prośbą do szanownych użytkowników tegoż zacnego forum smile.gif
tehaha
nie wiem po co tu wyrażenia regularne ja używam takiej funkcji i wszystko śmiga:
  1. public static function stringToLink($string, $delimiter = '-')
  2. {
  3. $pol = array("ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż", '-','--','&quot;','!','@','#','$','%','^','&','*','(',')','_','+','{','}','|',':','"','<','>','?','[',']','\\',';',"'",',','.','/','*','+','~','`','=');
  4. $uni = array("a", "c", "e", "l", "n", "o", "s", "z", "z", "A", "C", "E", "L", "N", "O", "S", "Z", "Z", '-','','','','','','','','','','','','','','','','','','','','','','','','');
  5. $string = strtolower(str_replace($pol, $uni, $string));
  6. $link = str_replace(' ', $delimiter, $string);
  7. return $link;
  8. }
bigbadcompany
Sprawdzę jutro i napiszę czy hula smile.gif

Cytat(tehaha @ 1.03.2011, 00:54:44 ) *
nie wiem po co tu wyrażenia regularne ja używam takiej funkcji i wszystko śmiga:


Całuję buty i ciućkam sznurówki smile.gif Działa pięknie. Sorka, że taki delay ale miałem ostatnio dużo spraw na czaszce smile.gif
Oczywiście poleciał "pomógł" smile.gif

Do zamknięcia
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.