PHP: URL Verifikation

  • #1
V

VoiD

Bekanntes Mitglied
Themenersteller
Dabei seit
05.06.2002
Beiträge
155
Reaktionspunkte
0
Habe schon im Internet (Google) gesucht aber nichts passendes gefunden. Vielleicht hat ja jemand was in der Hinterhand oder eine gute Adresse.

Ich suche ein PHP Skript zur Verifikation einer URL. Das Skript soll testen, ob es sich bei dem angebenen String um eine URL handelt. Als gültige URL's sollten folgende Angaben (mindestens) aktzeptiert werden:

http(s)://www.domain.de
http(s)://subdomain.domain.de
http(s)://192.168.0.1 (also Eingabe als IP)

Neben de sollen natürlich die anderen gültigen (wie com, biz.... usw) ebenfalls aktzeptiert werden.

Hoffe, dass mir jemand helfen kann.

Gruß
VoiD
 
  • #2
Hier ist ein Beitrag im The PHP Ressource Forum. Da wird das diskutiert.

Dafür verwendest du Reguläre Ausdrücke. Hier ist der entsprechende Artiekl auf php.net.
 
  • #3
ich hab im Netz folgenden Ausdruck zum überprüfen gefunden:

Code:
function vdCheckURL($url){
return  preg_match(#^((http(s)?|ftp|news)://)+[a-z\d\.@_-]*[a-z\d@_-]+\.([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|shop)[a-z\d@\/\%\#\~\.\?=&,;_-]*$#i,$url);
}
Quelle: http://www.php-resource.de/forum/sh...;threadid=19016&highlight=URL+Validierung

Leider verstehe ich zu wenig von den regulären Ausdrücken um es so erweitern / vervollständigen zu können, dass auch IP Adressen (also in der Form http://192.168.0.1) erkannt und aktzeptiert werden.

Vielleicht hat jemand eine entsprechende Ergänzung / Vervollständigung zur Hand.
 
  • #4
Hi,
das macht wenig Sinn diesen Ausdruck zu erweitern. Ich würde da eher einen zweiten Ausdruck nehmen, der die IP Adresse auf Gültigkeit überprüft. Dann guckst du, ob die Eingabe entweder dem Ausdruck oder dem der DNS Einträge gleich ist. Ist keins von beiden richig wurde offensichtlich eine falsche URL/ Nummer angegeben.

P.S.: Ausdruck vergessen ;D

/http:\/\/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/

wenn mich meine grauen Zellen nicht im Stich lassen ;D
Wobei dies nur für IPv4 gültig ist.

// stimmt so nicht
Für IPv6, falls interessant, müsstest du noch Optional die zwei letzen Drillinge hinten anhängen.
Soll aber auch erstmal egal sein. Es reicht erstmal IPv4
 
  • #5
Hi

@cledith
Ipv6 sieht ein wenig anders aus als nur 2 mehr Zahlenblöcke ;)

Gruß, Michael
 
  • #6
PCDReitz schrieb:
Hi

@cledith
Ipv6 sieht ein wenig anders aus als nur 2 mehr Zahlenblöcke ;)

Gruß, Michael
Hast man glatt Recht :D
Ich hätte schwören können, dass ich die mal anders gelesen habe, also wie IPv4 nur um 2 Blöcke erweitert. Aber auch egal.

Wen's interessiert: Hier der Eintrag in der dt. Wikipedia.
 
  • #7
Ich hab's jetzt mal folgdendermaßen zusammengesetzt:

Code:
function checkURL($url) {
  // Quelle:               [url]http://www.php-resource.de/forum/showthread.php?s=731389178d8ddca5b8918eaf9af1e2de&threadid=19016&highlight=URL+Validierung[/url]
  // Quelle (Inspiration): [url]http://www.wintotal-forum.de/?board=22;action=display;threadid=53252[/url]
  if(preg_match(#^((http(s)?|ftp|news)://)+[a-z\d\.@_-]*[a-z\d@_-]+\.([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|shop)[a-z\d@\/\%\#\~\.\?=&,;_-]*$#i,$url)==FALSE
    and preg_match(#^((http(s)?|ftp|news)://)+[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}#i,$url)==FALSE )
  {
    return FALSE;
  }
  return TRUE;
}

Findet das allgemeine Zustimmung oder ist es noch verbesserungswürdig?
 
  • #8
Findet das allgemeine Zustimmung oder ist es noch verbesserungswürdig?
Also, wenn du es getestet hast und alles funktioniert, dann wird das wohl alles wunderbar sein ;D
 
  • #9
@Cledith
ich war mir nicht sicher, ob der Ausdruck, denn Du mir angegeben hast, wirklich ein preg-Ausdruck war/ist. Ich hab in deshalb nach bestem Wissen angepassr ;)

Ansonsten funktioniert meine Funktion.

Besten Dank.
 
  • #10
  • #11
mmhh, ja, der Ausdruck http://http://..test.de klappt leider auch
 
Thema:

PHP: URL Verifikation

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.488
Neuestes Mitglied
elkhse
Oben