ich: REGEX - eMail automatisch mit mailto umgeben.

Hi.

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.

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.

  1. 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.

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

      Sollte gehen - der Text kommt aus einem CMS und eMailadressen werden entweder verlinkt oder nicht verlinkt enthalten sein. Alle Texte werden aus der "normalen" Seite ausgelesen und auf einer Subdomain in etwas anderer Form für mobile Geräte wieder ausgegeben. So wird das Kontaktformular auch ganz weg gelassen und die Anschrift bleibt stehen - mit unverlinkter eMail. Im Impressum wurden aber einige eMails schon auf der "normalen" Seite als Links im Text eingefügt (aber eben nicht alle).

      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.

      Ich verstehe was Du meinst, aber sollte da so etwas vorkommen, so hat sich jemand beim eingeben der Daten nicht an die Vorgaben gehalten und das Ganze muss dann eben überarbeitet werden.

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

      Da es nur xy@example.com oder <a href="mailto:xy@example.com">xy@example.com</a> geben kann/darf und alles andere als Eingabefehler angesehen wird brauche ich das wohl nicht...