URL-Überprüfung mit regulären Ausdrücken

Online-Skater

Erfahrenes Mitglied
So ich habe mich mal etwas ausfühlicher mit Regular Expressions beschäftigt und bin der Meinung: tolle Sache ;)

Und da ich auch mal in der Suche nachgeschaut habe wäre ich dafür Dieses Thema auch im PHP-FAQ Bereich aufzunehmen damit sich jeder darüber informieren kann :-)

gute Links wären: hier
und da
natürlich auch hier



So aber selbst danach konnte ich folgendes nicht lösen eine URL-Prüfung, die bekanntlich ja mit www. und auch ohne gültig ist.

Mein Versuch:
PHP:
$url = "http://wwwwwww.google-rostock.de";
$url_flag = preg_match("/^http:\/\/(w{3}\.)?[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}$/i",$url);
echo "Url-Test: $url_flag <br>";
Ergebnis: 1

Habe schon viel versucht ich brauche die Bedingung: Entweder www. oder nicht oben scheitert es daran das der Operator ? keinmal oder einmal
Eigentlich das was ich suche aber selbst mehr oder weniger als 3*w gehn durch :rolleyes:
Ich weis woran es liegt aber nicht wie das zu ändern ist *heul*

Thx 4 help.
 
So nach ein bichen rumprobieren hab ich es teilweise geschafft.

PHP:
$url_flag = preg_match("!^http:\/\/((w{3}\.){1}|[a-z0-9]+)([-_]?[a-z0-9])+\.[a-z]{2,4}$!i",$url);

es geht nun alles bis auf http://www.homepage.test.de
Sprich es dürfen nur max. 2 Punkte enthalten sein bei www. sofern vorhanden und beim Schluss .de z.B. Denn wenn ich innerhalb der domäne Punkte erlaube funktioniert das ganze nicht mehr.
 
Hallo,

PHP:
<?php

$tests = array(
	'http://www.tutorials.de/',
	'http://www.tutorials.de',
	'http://tutorials.de/',
	'http://i.loveruby.net/',
	'http://de/',
	'http://.de/',
	'http://abc.de/',
	'http://abc..de/',
	'http://abc§.de/',
	'http://germanisches.national.museum/',
	'http://www3.in.tum.de/',
	'http://3.141592653589793238462643383279502884197169399375105820974944592.com/',
);

$regex = '~^http://([a-z0-9]+\.)+[a-z]{2,6}/?$~i';

foreach ($tests as $test) {
	if (preg_match($regex, $test)) {
		echo '[VALID] ';
	} else {
		echo '[ERROR] ';
	}
	echo $test."\n";
}

?>

Grüße,
Matthias

PS: Ich splitte das mal in ein neues Thema auf, hat ja mit der ursprünglichen Frage nur noch wenig zu tun.
 
Vielen Dank erstmal für die Hilfe ich staunte nicht schlecht als ich den kurzen Ausdruck sah aber die Sache hat noch einen Haken und zwar das angesprochene wwww. oder ww. ;)

Abgesehn davon is die Lösung elegant und kurz.
 
Der Sinn des ganzen ist ja syntaktisch falsche URL-Adressen abzufangen :suspekt:
Und wenn der Herr User eine falsche Url einträgt dann soll Sie nicht gespeichert werden.
Denn in der Ausgabe wird sie anklickbar sein und man möchte ja nur ungerne tote Links haben !? ;)
 
Ich glaub wir reden aneinander vorbei :p
Da ist absolut nix dran falsch, es geht darum:

HTML:
http://wwww.tutorials.de   // mehr als 3w
http://ww.tutorials.de        //weniger als 3w

Diese Dinge laufen bei deinem Pattern durch ;)
 
Zurück