Hi,
Ich möchte eine URL auf Syntaktische Korrektheit prüfen.
wenn Deine RegExp weniger als acht Kilobyte umfaßt (nur die RegExp!), ist sie falsch :-)
Such mal im Forums-Archiv nach "prospero:", dann findest Du die RFC-konforme RegExp; zwar in Perl-Syntax aufgebaut, aber sie sollte nicht allzu schwer auf PHP umzubasteln sein. Wahrscheinlich funktioniert Copy&Paste für den größten Teil.
Mit
if(!ereg("^http://([a-zA-Z0-9-]{2,}.)*[a-zA-Z]{2,3}((/[_a-zA-Z0-9-]+)*(.[_a-zA-Z0-9-]+)*)*$",$url)) { echo "falsch!"; }
erhalte ich auch wunderbar fehlerhafte URLs.
_Einige_ fehlerhafte URLs. Viele richtige werden vermutlich auch als falsch fehlinterpretiert.
Leider ist hier aber nicht berücksichtigt, daß der Verzeichnisname natürlich auch ein "~" enthalten darf.
Wie kommst Du denn darauf? RFC 1738 verbietet die Tilde; richtig wäre an der Stelle ein %7E.
Mir ist allerdings bewußt, daß viele ihre URL falsch angeben.
Erweitere ich aber die letzten beiden Teile jeweils auf [_a-zA-Z0-9-~]
Schau Dir mal die Bindestriche genauer an und überlege Dir ihre Bedeutung. Hinweis: Als letztes Zeichen der Zeichenklasse wird erkannt, daß die Sonderbedeutung nicht hinhaut.
bekomme ich ebenso einen Fehler wie bei [_a-zA-Z0-9-~].
Die Tilde ist nicht das Problem... :-)
Cheatah