WauWau: Links erkennender Pattern

Beitrag lesen

Hola,

mal wieder ein gähnend langweiliges Threads über Links erkennende Reguläre Ausdrücke.

Also, momentan benutze ich (an einer irrelevanten Stelle) sowas:

#(^|[^"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm

Handelt aber .... irgendwie komisch. Habe ich von irgendwo von http://www.php.net.

Erkennen würde ich gerne auch Links, die nur mit www. beginnen.
Und ich brauche auch nur http und ftp.

Zusammengebastelt habe ich mir schon folgendes:

/(http://|ftp://|www.)([a-zA-Z0-9.-]+)([a-zA-Z0-9/\.-?]+)?/i

Hmm... das findet schonmal etwas, das mit http://, ftp:// oder www. beginnt, und einen Hostnamen danach. Aufhören tud es beim folgenden dateinamen. Denn da ist ja erst schonmal ein "/" oder "" drin, oder punkte, dann ? für nen Querystring, dazu gehört dann auch schon wieder & und =, usw. usw... Da ist es doch unmöglich, zwischen:

"Hieß die Domain www.google.de?Oder dann doch www.ich-gleich-du.de?"

und

"Bla: http://www.sonstwas.de/ich/du/er?sie=es"

zu unterscheiden....

Mit Begrenzungszeichen ("bla: [www.bla.de]") möchte ich nicht arbeiten. Hat jemand eine Idee, was sich da machen ließe? Welche Zeichen sind eigentlich überhaupt alle bei einem Dateinamen erlaubt? Im Query-string afaik nur "=", "&" und "+" (und das davorstehende "?"), alles andere müsse maskiert werden.

WauWau

--
ss:) zu:) ls:& fo:) de:] va:) ch:° n4:( rl:( br:^ js:| ie:% fl:{ mo:|
E-Mail WauWau: [mailto:der-wauwau@gmx.de]