suit: REGEX - eMail automatisch mit mailto umgeben.

Beitrag lesen

Ich suche einen Weg um eMailadressen innerhalb eines Fließtextes zu finden, der teilweise schon mit HTML Tags durchsetzt ist und mit einem mailto: Link zu versehen - aber nur dann wenn sie nicht bereits verlinkt ist.

Und da glaubst du, dass ein Regulärer Ausdruck ein Problem aus der Welt schafft?

Es kann nämlich nicht davon ausgegangen werden, dass es in der Quelle nicht bereits fertig verlinkte Adressen gibt und ich möchte Dinge wie <a href="mailto:<a href=..." vermeiden.

Es kann auch davon ausgegangen werden, dass Dinge die Aussehen wie Mail-Adressen auch z.B. in Kommentaren stehen können oder in Attributwerten, in denen sie gar nichts verloren haben.

z.B. <input type="text" placeholder="foo@example.com" /> - hier kannst du nicht einfach ein a-Element herumwickeln.

Die beste Lösung ist, einen XML- oder HTML-DOM-Parser zu verwenden und das Dokument durchzuackern.

Bei allem was z.B. nicht in Attributwerten oder Ankertexten anderer Links vorkommt kannst du dann mit einem Regulären Ausdruck suchen (der auch nicht wenig komplex sein wird). Die gefundenen Adressen prüfst du dann (davor, dahinter), ob sie auch wirklich Gefahrlos ersetzt werden können - das geht auch innerhalb des PCRE, macht diese aber wesentlich komplexer.