RegEx: Bessere URL Ersetzung

Der Held

Erfahrenes Mitglied
Hi,
inspiriert vom Thread "Warum Geht Das Nicht ? Dringend" wollte ich mal gucken wie man wohl so ne URL- Ersetzung am sinnigsten umsetzt.
PHP:
preg_replace("/(http\:\/\/)?(www\.[A-Za-z0-9\\/\_]*\.[A-Za-z]{2,3})/is","<a href=\"http://\\2\" target=\"_blank\">\\1\\2</a>",$todo);
funktioniert eigentlich ganz gut, aber der / wird nicht mit erkannt.
Ich hab ihn aber in der zweiten Klammer mit \ maskiert, sollte doch so stimmen, beim _ gehts ja auch. aber die URL wird nur bis zum / als Link interpretiert. :confused:

Hat jemand nen Tip oder vielleicht nen besseren RegEx für mich?

Greetz :|
 
Hmm, stimmt, war noch etwas früh am Tag für son Zeug ;)

Leider sind hier durch die Formatierung im Forum einige \ rausgefallen, aber ich kann versichern, das vor jedem Zeichen ein \ stehtum es zu maskieren.

mit der ersten Klammer (http://)? mache ich die Angabe des http:// optional, damit sowohl http://irgendwas.de als auch http://www.irgendwas.de erkannt wird.

Die zweite Klammer enthält den tatsächlich wichtigen Teil:
(http://www.[A-Za-z0-9\\/_]*.[A-Za-z]{2,3})

Nach dem http://www. werden in der eckigen Klammer alle erlaubten Zeichen innerhalb der Adresse angegeben, also Buchstaben, Ziffern, der_ und auch der /, mit vorangestelltem \ zum maskieren. Trotzdem wird nen Link bloss bis zum erkannt, also aus http://www.irgendwo.de/index.php wird
<a href="http://www.irgendwo.de">http://www.irgendwo.de</a>/index.php

*puuuh*
Jetzt verständlicher
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück