Hallo,
ich versuche bereits seit einigen Stunden eine URL zu überprüfen. Zusert habe ich folgendes probiert:
if (filter\_var($url, FILTER\_VALIDATE\_URL) == false) {
// Fehler
}
Allerdings sind URLs wie „http://test“ gültig. Daher habe ich auch gleich nach einem passenden Regex gesucht:
// siehe http://www.krio.me/how-to-validate-a-url-php
$regex = '/^(http):\/\/([A-Z0-9][A-Z0-9\_-]\*(?:\.[A-Z0-9][A-Z0-9\_-]\*)+):?(\d+)?\/?/i';
if (!preg\_match($regex, $url)) {
//Fehler
}
Leider nicht optimal, da Leerzeichen im URL möglich sind (z.B. http://test.com de). Also auf zum nächsten Regex:
// siehe http://www.mykeblack.com/scripts/php/form-validation/php-check-for-valid-url-syntax
$regex = '#^(http:\/\/|https:\/\/|www\.)(([A-Z0-9][A-Z0-9\_-]\*)(\.[A-Z0-9][A-Z0-9\_-]\*)+)(:frowning:\d+))?(\/)\*$#i';
if (!preg\_match($regex, $url)) {
//Fehler
}
Hier sind wiederum URLs wie „http://test.com/test/test.html“ ungültig. Ich suche keine perfekte Lösung, da ich diese vermutlich ohnehin nicht finde. Aber hat jemand eine Idee, was ich noch probieren könnte?
Schöne Grüße, Elo