Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Błąd w połączeniu wyrażenia regularnego
Forum PHP.pl > Forum > Przedszkole
Pcbecaw
  1. if(!preg_match('/^(http|ftp)([s]{0,1}):\/\/([a-z0-9]{1})((([a-z0-9-]*[-]{2})|([a-z0-9])*|([a-z0-9-]*[-]{1}[a-z0-9]+))*)((\.[a-z0-9](([a-z0-9-]*[-]{2})|([a-z0-9]*)|([a-z0-9-]*[-]{1}[a-z0-9]+))+)*)(\.([a-z0-9]{2,6})){0,1}((:[0-9]){0}|(:[1-9]{1}[0-9]*))\//iu', $_POST['avatar']) || !isset($_POST['avatar'])) $errors['znakiavatar']=true;

Powyższy kod miałby za zadanie sprawdzić, czy we wpisanym polu znajdują się dozwolone znaki (sprawdzenie URL) lub czy nie jest pusty. Jeśli ma dozwolone znaki, albo jest pusty = powinno być ok.
Jednak takie coś sprawdza url dobrze, jednak nie pozwala na wysłanie pustego pola. Dla porównania podobne sprawdzenie co do imienia:
  1. if (!preg_match('/^[a-ząćęłńóśźż]*$/ui', $_POST['imie']) || !isset($_POST['imie'])) $errors['znakiimie']=true;

i to działa. Jak zrobić, aby sprawdzenie URL też działało?

Uff... sporo męczenia, ale rozwiązaniem jest '&&' wink.gif
wookieb
Człowieku... filter_var
A poza tym dorzuć sobie warunek, że zmienna może być pusta i po sprawie...
Pcbecaw
filter_var nie pozwala na dodanie strony typu: "www.nazwa.pl" lub "nazwa.pl", więc zastąpiłem to odpowiednim wyrażeniem regularnym (innym, niż powyższe i dodałem warunek, że może być pusta).
wookieb
filter_var + parse_url + empty i masz wszystko co chcesz... Nie posługiwałbym się wyrażeniami regularnym do sprawdzania formatu ze standardu RFC bo może coś przez przypadek ominąć a wtedy jest źle.
Pcbecaw
coś nie wychodzi mi połączenie filter_var z parse_url. Mógłbyś/mógłby ktoś podrzucić materiał, z którego mógłbym się tego dowiedzieć, jak to zrobić? Albo jakiś mały przykład? Info z manuala nie są zbyt jasne.
wookieb
Więc pokaż co masz.
Pcbecaw
  1. if(!filter_var($_POST['www'], FILTER_VALIDATE_URL) && !empty($_POST['www'])) $errors['znakiwww']=true;

nie wiem jak do tego dodać parse_url.
wookieb
  1. parse_url($_POST['www'], PHP_URL_HOST) === 'www.nazwa.pl'
Pcbecaw
mi chodzi o to połączenie filter_var i parse_url w jedno, bo nie mam pojęcia jak to zrobić.
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.