Ich hab Google zu Rate gezogen, aber nichts brauchbares gefunden. Jemand von
euch hat doch sicher den RegEx-String für eine gültige URL (mit oder ohne
http://)???
Mit bestem Dank!
Dominik
--
"That's your problem!"
- Slobodan Milosevic in Den Haag
> Mahlzeit =)
>
> Ich hab Google zu Rate gezogen, aber nichts brauchbares gefunden.
> Jemand von euch hat doch sicher den RegEx-String für eine gültige URL
> (mit oder ohne http://)???
Kurz und handlich;
$regexp = "^(https?://)"; // http://
$regexp .= "?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-]+@)?"; // username:password@
$regexp .= "(([0-9]{1,3}\.){3}[0-9]{1,3}"; // IP- 199.194.52.184
$regexp .= "|"; // allows either IP or domain
$regexp .= "([0-9a-z_!~*'()-]+\.)*"; // tertiary domain(s)- www.
$regexp .= "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\."; // second level domain
$regexp .= "[a-z]{2,6})"; // first level domain- .com or .museum
$regexp .= "(:[0-9]{1,4})?"; // port number- :80
$regexp .= "((/?)|"; // a slash isn't required if there is no file name
$regexp .= "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; // filename/queries/anchors
MfG
Andreas
--
www.mikrocontroller.net
AVR-Tutorial, Forum und Linkliste
Suchmaschine für 4800 Mikrocontrollerseiten
Vielen Dank, genau das hab ich gesucht. Und wieder 30 Minuten tüfteln
erspart =)
Gruss
Dominik
Ohne http:// ist die URI aber nicht gültig.
>Kurz und handlich;
>
>$regexp = "^(https?://)"; // http://
>$regexp .= "?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-]+@)?"; // username:password@
Userinfo ist in HTTP URLs nicht gültig.
>$regexp .= "(([0-9]{1,3}\.){3}[0-9]{1,3}"; // IP- 199.194.52.184
Das erlaubt ungültige IP-Adressen, das verbietet wörtliche
IPv6-Adressen.
>$regexp .= "|"; // allows either IP or domain
>$regexp .= "([0-9a-z_!~*'()-]+\.)*"; // tertiary domain(s)- www.
Das erlaubt ungültige Hostnames, z.B. '!.'.
>$regexp .= "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\."; // second level domain
>$regexp .= "[a-z]{2,6})"; // first level domain- .com or .museum
Das verbietet viele gültige Hostnamen, z.b. foo.example.
>$regexp .= "(:[0-9]{1,4})?"; // port number- :80
Das verbietet gültige Port-Angaben.
>$regexp .= "((/?)|"; // a slash isn't required if there is no file name
>$regexp .= "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; // filename/queries/anchors
Fragmentbezeichner sind in HTTP URLs nicht erlaubt; du erlaubst Zeichen,
die so nicht im Pfad- oder Querybestandteil vorkommen dürfen.
Ich empfehle den regulären Ausdruck von Abigail, der ist zwar auch nicht
perfekt, aber im Vergleich hierzu eine wahre Wonne.
--
Björn Höhrmann { mailto:bjo...@hoehrmann.de } http://www.bjoernsworld.de
am Badedeich 7 } Telefon: +49(0)4667/981028 { http://bjoern.hoehrmann.de
25899 Dagebüll { PGP Pub. KeyID: 0xA4357E78 } http://www.learn.to/quote/
Wo krieg ich den her?
Gruss
Dominik
Du glaubst wirklich, dass es so viele Leute gibt, die Abigail heissen
und reguläre Ausdrücke für URLs schreiben? Auf seiner Homepage.
> * Andreas Schwarz wrote in de.comp.lang.php:
>
> Ich empfehle den regulären Ausdruck von Abigail, der ist zwar auch
> nicht perfekt, aber im Vergleich hierzu eine wahre Wonne.
Gut, deine Kritik ist berechtigt, für den Alltagsgebrauch (Blödsinnsangaben
aus Linklisten filtern) dürfte diese Regex jedoch völlig ausreichen.
Er filtert gültige URIs heraus, damit ist der Reguläre Ausdruck ebenso
unbrauchbar wie einer für Emailadressen, der
"bjoern hoehrmann"@websitedev.de nicht als gültig anerkennen will.