Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znaki diakrytyczne w urlach
Forum PHP.pl > Forum > PHP
starach
Chcę generować dynamicznie linki które miałyby zawierać tytułu na przykład produktów.
Jak wiadomo w takich tytułach można użyć znaków diakrytycznych które nie zostaną 'ładnie' wyświetlone w pasku adresu.

Jak wykryć takie znaki powiedzmy że wiem ... wystarczy że zrobię zbiór znaków dozwolonych
lub porównam ich wartości ASCII za pomocą ord(), ale jak mam znaleźć ich odpowiedniki.
Czyli ó - o, ö - o, u - ü, ź - z, ż - z i tak dalej ?
LonelyKnight
może po prostu

  1. <?php
  2. function toRewriteURL ($strString) {
  3.  
  4.  
  5. $arrBad = array('ą', 'ż', 'ś', 'ź', 'ć', 'ę', 'ń', 'ó', 'ł');
  6. $arrGood = array('a', 'z', 's', 'z', 'c', 'e', 'n', 'o', 'l');
  7.  
  8. $strString = str_replace($arrBad, $arrGood, $strString);
  9.  
  10. return $strString
  11. }
  12. ?>
starach
Tak tak ja wiem dzięki ale co z umlautami na przykład ?
LonelyKnight
Z tym będzie problem. Jak na polskie warunki to funkcją jaką podałem będzie ok ale jak chcesz zamieniać wszystkie znaki diakrytyczne to nie mam pomysłu jak to zrobić. Ewentualnie dodałbym do tego co wcześniej:

1. string >> tablica
2. lecimy po całej tablicy
3. jeśli dana wartość nie znajduje w dopuszczalnych znakach to ok
4. jeśli nie to zmieniamy ją np. na _
5. tablice >> string

W efekcie wszystkie polskie znaki diakrytyczne zamienione będą na ich odpowiedniki bez ogonków a wszystko inne na _
revyag
A nie prościej użyć
urlencode" title="Zobacz w manualu PHP" target="_manual ?
W komentarzach też są ciekawe przykłady.
matix
Nie widzę potrzeby, aby usuwać polskie znaki diakrytyczne z URL-i. Moim zdaniem to wielki błąd - zostaw je, niech wygląda to zamiast /coś.html to np. co%25.html ,ale google poczyta to sobie normalnie. Przykładem może być mój serwis mp3y.eu. Masz taką samą pozycję w google pod hasłem/frazą bez danego znaku diakrytycznego, co więcej - wyższą w przypadku wpisaniu szukanego hasła z polskimi znakami.

Na prawdę nie warto, spowolnisz tylko sobie serwis pod kątem optymalizacji i pogorszysz sprawę. Usuwaj tylko ' , ", : , < , #, $ itp...;]

Pozdrawiam,
Mateusz
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.