WiMu: Hilfe bei regulärem Ausdruck

Beitrag lesen

Hallo liebes Forum,

mit regulären Ausdrücken stehe ich auf Kriegsfuß ... dieses Vieh (das nicht von mir stammt) soll URLs als solche erkennen und automatisch in links umwandeln - was es auch einigermaßen tut:

$pattern = '/(((f|ht){1}tp(s){0,1}:\/\/)[-a-zA-Z0-9@:%_\+.;,~#?&\/\/=]+)/i';  
$replacement = '<a href="\\1" target="_blank">\\1</a>';  
$text = preg_replace($pattern, $replacement, $text);

Doof aber, wenn der Text bereits manuell eingefügte links enthält - also z.B.

foo <a href="http://bar.de">bar.de</a>

... dann wird daraus

foo <a href="<a href="http://bar.de" target="_blank" ...

oder ähnliches. Habe schon alles mögliche ausprobiert, mit (?!<a href=") vornedran beispielsweise, aber nichts funktioniert so wie es soll. Leider kann ich nicht einfach Leer- oder Satzzeichen matchen, weil u.A. auch URLs in Klammern verlinkt werden sollten.

Wäre super, wenn ihr mir helfen könntet. Habe mich schon durch alle möglichen RegEx-Bibliotheken gequält, aber kein Ausdruck passt ...

Dank und Grüße,
WiMu