Regex: auto link
Hallo Leute,
mittels folgenden Code durchsuche ich einen String und erzeuge klickbare Links:
Den Code selbst habe ich nach einiger Suche im www gefunden.
Nun aber folgendes Problem: wenn im String bereits ein klickbarer Link (<a ......>) vorhanden ist, setzt er davor nochmal ein <a ...>, da der Code nicht prüft, ob der Link "Text" ist oder schon ein Anchor.
Leider bin ich nicht 1000% fit mit Regex und meine Versuche das Problem zu lösen sind bisher gescheitert.
Hat wer eine Idee bzw. einen Ansatz für mich?
Besten Dank für eure Hilfe
Patrick
mittels folgenden Code durchsuche ich einen String und erzeuge klickbare Links:
$url = '@(http(s)?)?(://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@';
$content = preg_replace($url, '<a href="http$2://$4" title="$0">$0</a>', $content);
Den Code selbst habe ich nach einiger Suche im www gefunden.
Nun aber folgendes Problem: wenn im String bereits ein klickbarer Link (<a ......>) vorhanden ist, setzt er davor nochmal ein <a ...>, da der Code nicht prüft, ob der Link "Text" ist oder schon ein Anchor.
Leider bin ich nicht 1000% fit mit Regex und meine Versuche das Problem zu lösen sind bisher gescheitert.
Hat wer eine Idee bzw. einen Ansatz für mich?
Besten Dank für eure Hilfe
Patrick
Please also mark the comments that contributed to the solution of the article
Content-ID: 368947
Url: https://administrator.de/forum/regex-auto-link-368947.html
Printed on: January 23, 2025 at 17:01 o'clock
4 Comments
Latest comment
Machs z.B. mit einem negative lookbehind
Schnuffi
$url = '@(?<!href=["\'])https?://(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@i';
$content = preg_replace($url,'<a href="$0">$0</a>',$content);
Doch wurde getestet, dein Regex verhindert nicht effektiv das es Verschachtelungen geben kann, aber wat Solls, kennt ja keiner hier deine Source ...