Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inne]problem z wyrażeniami regularnymi zawierającymi polskie znaki
lamcpp
post
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

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


witam, używam .htaccess do tworzenia prostych adresów, taka reguła:
Kod
RewriteRule ^Inne/([0-9]+)/([0-9]+)/([-\s{}0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ\?]+)$ index.php?kategoria=Inne&id=$1&page=$2&nazwa=$3

działa dobrze do czasu, gdy nazwa artykułu zawiera polskie znaki.
Cytat
np. Jak zbadać glebe?

Jest tu znak ć, wyrażenie nie zadziała a serwer zwróci błąd 404, w którym będzie pisało:
Cytat
The requested URL /Inne/2/1/Jak-zbadać-glebe?

widać tu że polskie znaczki zostają zamienione na jakieś krzaczki, ć -> zostało zamienione na ć
i w przypadku gdy dodam do reguły znak ć to wszystko będzie działać poprawnie:
Kod
RewriteRule ^Inne/([0-9]+)/([0-9]+)/([-\s{}0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ\?ć]+)$ index.php?kategoria=Inne&id=$1&page=$2&nazwa=$3

Pytanie: skąd się wzięły takie krzaczki zamiast pl znaków, jak zrobić by nie trzeba było dodawać w regule tych krzaczków a'la: ć tylko by poprawnie reagowała ona na polskie znaki?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
!*!
post
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Zacznijmy od tego że link nie powinien zawierać PL znaków, w ogóle nie powinien zawierać niczego więcej prócz [0-9a-z] i jakiś od dzielników. Przy zapisie linku do bazy, jego generowaniu zamieniasz np.
Kod
ą => a, ć => c
itd. Problemem może być też kodowanie jakie ustawiłeś. Sprawdź czy wszędzie masz utf-8

A jeśli się upierasz przy PL znakach, to zamień je tak samo:

Cytat
ą %B1
ć %E6
ę %EA
ł %B3
ń %F1
ó %F3
ś %B6
ż %BF
ź %BC

Ą %A1
Ć %C6
Ę %CA
Ł %A3
Ń %D1
Ó %D3
Ś %A6
Ż %AF
Ź %AC


Choć to masochizm, bo co jeśli wpiszę Inne/2/1/Jak-zbadac-glebe ? Już mi się strona nie wyświetli, albo będzie inna? A wpiszę ją tak, bo nawet szary kowalski wie iż w adresach WWW nie ma ogonków (IMG:style_emoticons/default/wink.gif)

urldecode
utf8-decode

Ten post edytował !*! 6.12.2011, 10:16:39
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 28.12.2025 - 19:08