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