Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Znaki diakrytyczne w urlach, Wykrywanie i zamiana na odpowiedniki bez ogonków
starach
post 9.04.2008, 22:09:39
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


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 ?
Go to the top of the page
+Quote Post
LonelyKnight
post 9.04.2008, 22:30:44
Post #2





Grupa: Zarejestrowani
Postów: 240
Pomógł: 13
Dołączył: 1.06.2007
Skąd: Wrocław

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


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


--------------------
Good programming is 99% sweat and 1% coffee.
Make it idiot proof and someone will make a better idiot...
Go to the top of the page
+Quote Post
starach
post 10.04.2008, 05:21:24
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Tak tak ja wiem dzięki ale co z umlautami na przykład ?
Go to the top of the page
+Quote Post
LonelyKnight
post 10.04.2008, 10:10:55
Post #4





Grupa: Zarejestrowani
Postów: 240
Pomógł: 13
Dołączył: 1.06.2007
Skąd: Wrocław

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


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 _


--------------------
Good programming is 99% sweat and 1% coffee.
Make it idiot proof and someone will make a better idiot...
Go to the top of the page
+Quote Post
revyag
post 10.04.2008, 12:23:12
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


A nie prościej użyć
urlencode" title="Zobacz w manualu PHP" target="_manual ?
W komentarzach też są ciekawe przykłady.


--------------------
-------------

------
Go to the top of the page
+Quote Post
matix
post 10.04.2008, 13:58:42
Post #6





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

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


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


--------------------
Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
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 Wersja Lo-Fi Aktualny czas: 8.06.2025 - 05:05