Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Walidacja URL - najlepszy sposób?
tomilipin
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 28.01.2004
Skąd: że znowu ლ(ಠ益ಠლ

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


Cześć,
poszukuję najlepszego sposobu na walidację adresów stron w skrypcie PHP. Robię klasę więc wersja obiektowa będzie mile widziana.

Próbowałem już funkcji parse_url oraz filter_var - niestety, obie przepuszczają niepoprawne adresy (pomijając fakt, że parse_url nie służy do walidacji). Chciałbym się więc skierować w stronę wyrażeń regularnych, ale w wielu przypadkach użytkownicy to odradzają. Dlaczego?

Znalazłem takie wyrażenie regularne:
  1. '%^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@|\d{1,3}(?:\.\d{1,3}){3}|(?:(?:[a-z\d\x{00a1}-\x{ffff}]+-?)*[a-z\d\x{00a1}-\x{ffff}]+)(?:\.(?:[a-z\d\x{00a1}-\x{ffff}]+-?)*[a-z\d\x{00a1}-\x{ffff}]+)*(?:\.[a-z\x{00a1}-\x{ffff}]{2,6}))(?::\d+)?(?:[^\s]*)?$%iu'

z jednej strony jest okropnie długie i jego wykonanie może być zasochłonne, ale z drugiej strony - nie przepuści żadnego błędnego URLa.

Jeśli mogę to samo uzyskać krótszym i prostszym kodem, to chętnie skorzystam, tylko błagam... nie odsyłajcie do szukajek - większość linków (nawet do Zenda w innym temacie na forum) jest już nieaktualnych, albo proponują tam rozwiązanie przepuszczające np. http://www.. (dwie kropki na końcu)

Na dłuższy czas porzuciłem tę kwestię, ale znowu muszę się nią zająć... Nadal poszukuję niezawodnego sposobu parsowania URLi.
Wyrażenie, które podałem w powyższym poście przepuszcza adresy typu:
Kod
http://www.kbrg.
http://www.kbrg
(z kropką i bez kropki na końcu)

Próbowałem też regexpy ze strony http://mathiasbynens.be/demo/url-regex ale nie potrafię dostosować ich do PHP - ciągle wywala mi jakiś błąd (IMG:style_emoticons/default/sad.gif)

Jakieś pomysły?

Ten post edytował tomilipin 31.08.2013, 15:30:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
timon27
post
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Mój kod NIE przepuszcza adresu z kropką na końcu. Coś źle wkleiłeś.

  1. if(urlExists("http://www.kbrg.")) echo 'dobry'; else echo 'zly';


wklej to za definicją funkcji.
Bez kropki zwraca prawdę, bo to dobry adres

Ten post edytował timon27 16.03.2014, 17:22:06
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: 13.10.2025 - 21:57