URL prüfen mit Regex

  • Themenstarter Themenstarter ByeBye 242513
  • Beginndatum Beginndatum
B

ByeBye 242513

Hallo Community,

könnte mir jemand eine RegEx geben um URLs zu prüfen?
Möchte einfach das wenn ein User bei mir einen URL schreibt, dieser automatisch in einen Link umgewandelt wird, falls er http, https, www oder ftp davor schreibt.

Beispiel:
PHP:
if(preg_match('---code--' , $url)) { $echo = '<a href="'.$url.'">'.$url.'</a>'; }

Vielen Dank :)
 
Danke für die schnelle Antwort, leider funktioniert es nicht wenn ich nur "www.domain.de" schreibe.

EDIT:
Habe jetzt eine Lösung gefunden:
PHP:
if(preg_match('!^(((ftp|http|https|)://)|www.)+([a-z0-9\.-]{3,})\.[a-z]{2,4}(/)?$!i', $url)) { $input = '<a href="'.$url.'" target="_blank">'.$url.'</a>'; }
 
Zuletzt bearbeitet von einem Moderator:
Danke für die schnelle Antwort, leider funktioniert es nicht wenn ich nur "www.domain.de" schreibe.

EDIT:
Habe jetzt eine Lösung gefunden:
PHP:
if(preg_match('!^(((ftp|http|https|)://)|www.)+([a-z0-9\.-]{3,})\.[a-z]{2,4}(/)?$!i', $url)) { $input = '<a href="'.$url.'" target="_blank">'.$url.'</a>'; }

Moin ;)
Dieser Regexp ist allerdings etwas fehlerhaft...dort gehen auch Domains durch, die so geschrieben wurden: "http://www.domainde"

Ich stehe auch gerade vor dem problem, eine URL (inkl Pfad) zu Prüfen und habe es inzwischen auf das geschafft:

Code:
elseif (!preg_match('!^(http|https)+(://)+(www\.)?([a-z0-9\.-]{3,})\.[a-z]{2,6}(\.[a-z]{2,6})?(/)?([a-z0-9\.\-\+\_\#\?\=\,\/\&\%\;\:]{1,})?$!i', $_POST['k_url']))

Dummerweise ist im Rot-Markierten Code auch ein fehler enthalten, sobald dieser Bereich raus ist, wird zumindest die Gültigkeit der TLD geprüft ;)
 
Zurück