Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmiękczenia w url
Forum PHP.pl > Forum > Przedszkole
4in1
Witam, czy wie kto¶ jak zrobić aby URL zamiast
www.strona.pl/to-jest-mój-artykuł,
wy¶wietlał:
www.strona.pl/to-jest-moj-artkul ?

Fragment kodu skryptu
  1. function generate_seo_link($input,$replace = '-',$remove_words = true,$words_array = array() )
  2. {
  3. //make it lowercase, remove punctuation, remove multiple/leading/ending spaces
  4. $return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\s±ż¶ĽćęłóńˇŻ¦¬ĆĘŃÓŁ]/','',strtolower($input))));
  5.  
  6. //remove words, if not helpful to seo
  7. //i like my defaults list in remove_words(), so I wont pass that array
  8. if($remove_words) { $return = remove_words($return,$replace,$words_array); }
  9.  
  10. //convert the spaces to whatever the user wants
  11. //usually a dash or underscore..
  12. //...then return the value.
  13. return str_replace(' ',$replace,$return);
  14. }


Znalazłem podpowiedzi typu http://blog.poradnik-webmastera.com/57/skr...-krzaczki-w-url, jednak nie wiem jak to wprowadzić w ten skrypt...
Sephirus
  1. $adres = 'www.strona.pl/to-jest-mój-artykuł';
  2.  
  3. $polskieLiterki = '±ż¶Ľęćń󳡯¦¬ĘĆŃÓŁ';
  4. $odpowiedniki = 'azszecnolAZSZECNOL';
  5.  
  6. $adres = str_replace(str_split($polskieLiterki), str_split($odpowiedniki), $adres);
  7.  
  8. echo $adres; // www.strona.pl/to-jest-moj-artykul
4in1
Z z tym www.strona.pl/to-jest-mój-artykuł to byl przyklad wink.gif
chodzi mi o dodanie takiej formulki do skryptu ktory podalem powyzej, aby zamienialo wszystkie adresy.
Sephirus
Hmm bez urazy ale czy to aż takie trudne wrzucić te parę linijek na pocz±tek tej funkcji? smile.gif Tylko z głow± oczywi¶cie smile.gif
Go¶ć
Szczerze, nie potrafie ... ; x
Sephirus
  1. function generate_seo_link($input,$replace = '-',$remove_words = true,$words_array = array() )
  2. {
  3. // TUTAJ DODAJEMY
  4. $polskieLiterki = '±ż¶Ľęćń󳡯¦¬ĘĆŃÓŁ';
  5. $odpowiedniki = 'azszecnolAZSZECNOL';
  6.  
  7. $input = str_replace(str_split($polskieLiterki), str_split($odpowiedniki), $input);
  8. // I MAŁA POPRAWKA PONIŻEJ
  9.  
  10.  
  11. //make it lowercase, remove punctuation, remove multiple/leading/ending spaces
  12. $return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($input)))); // TU JUŻ USUWANIE POLSKICH LITEREK JEST ZBĘDNE
  13.  
  14. //remove words, if not helpful to seo
  15. //i like my defaults list in remove_words(), so I wont pass that array
  16. if($remove_words) { $return = remove_words($return,$replace,$words_array); }
  17.  
  18. //convert the spaces to whatever the user wants
  19. //usually a dash or underscore..
  20. //...then return the value.
  21. return str_replace(' ',$replace,$return);
  22. }
4in1
Powiem tak, cos dziala ale nie tak jak trzeba wink.gif Otoz url wyswietlaja sie tak:

szczę¶cie
www.strona.pl/szczaasccie
telefon komórkowy
www.strona.pl/telefon-komcnrkowy/
zioła
www.strona.pl/ziosla
  1. każda

www.strona.pl/kaszdaz
Sephirus
Ok masz rację zapomniałem o tym że str_split nie obsługuje znaków podwójno-bajtowych w zwi±zku z tym zamień moj± wstawkę na:

  1. // TUTAJ DODAJEMY
  2. $polskieLiterki = array('±','ż','¶','Ľ','ę','ć','ń','ó','ł','ˇ','Ż','¦','¬','Ę','Ć','Ń','Ó','Ł');
  3. $odpowiedniki = array('a','z','s','z','e','c','n','o','l','A','Z','S','Z','E','C','N','O','L');
  4.  
  5. $input = str_replace($polskieLiterki, $odpowiedniki, $input);
  6. // I MAŁA POPRAWKA PONIŻEJ


EDIT: po¶piech jest złym doradc±... smile.gif
4in1
Działa! Dzięki wielkie kolego, widać, że wiesz co robisz smile.gif Pozdrawiam serdecznie
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.