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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 368947
Url: https://administrator.de/forum/regex-auto-link-368947.html
Ausgedruckt am: 05.02.2025 um 19:02 Uhr
4 Kommentare
Neuester Kommentar
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 ...