Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inne]problem z wyrażeniami regularnymi zawierającymi polskie znaki
lamcpp
post 6.12.2011, 08:53:31
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
by_ikar
post 6.12.2011, 12:05:12
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Nie no z polskich znaków korzystać można a adresach url. Zamiast wrzucać do wyrażenia niejako "zabezpieczenie" przed wpisywaniem niepowołanych znaków, czyli umieszczaniem w zakresie znaków wszystkiego co może przelecieć, wrzuć tam jakieś wyrażenie które przeleci przez wszystko. Powiedzmy:

Kod
RewriteRule ^Inne/([0-9]+)/([0-9]+)/(.+)$ index.php?kategoria=Inne&id=$1&page=$2&nazwa=$3


Lub jak już usilnie próbujesz zrobić dodatkowe zabezpieczenie, to zamiast dozwolone znaki, spróbuj wypisać niedozwolone, coś na ten przykład:

Kod
RewriteRule ^Inne/([0-9]+)/([0-9]+)/([^\,\.\/<>\?]+)$ index.php?kategoria=Inne&id=$1&page=$2&nazwa=$3


aczkolwiek, nie wypisałem tutaj wszystkich niedozwolonych znaków. Dodatkowo poczytaj ten temat: http://forum.php.pl/index.php?showtopic=171554 być może masz podobny problem, którego rozwiązania póki co nie ma.

Ten post edytował by_ikar 6.12.2011, 12:07:55
Go to the top of the page
+Quote Post

Posty w temacie


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: 29.06.2025 - 15:59