Wenn Email in Text Email mit mailto: link ersetzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wenn Email in Text Email mit mailto: link ersetzen

    Hallo,
    ich möchte, wenn eine Emailadresse im Text vorhanden ist, diese als mailto-link ausgeben lassen. Wie kann ich einen Filter gestalten, der mir a) eine Emailadresse identifiziert und b) diese auch in seiner Bezeichnung erfassen kann.

    Hier ist ein erster Ansatz:

    PHP-Code:
    <?php
    $zeichenkette 
    'Hier ist meine Emailadresse: [email]info@web.de[/email]';
    $suchmuster 'ensprechender Filter für Email';
    $email "Aus Filter bestimmen";
    $ersetzung '<a href=\"mailto:'.$email.'\">'$email'</a>';
    echo 
    preg_replace($suchmuster$ersetzung$zeichenkette);
    ?>
    Hier ein zweiter
    PHP-Code:
    $zeichenkette 'Hier ist meine Emailadresse: [email]info@web.de[/email]';
    $suchmuster '"/[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}/i"';
    $ersetzung '<a href=\"mailto:info@web.de\">info@web.de</a>';
    echo 
    preg_replace($suchmuster$ersetzung$zeichenkette); 
    Zuletzt geändert von sanktusm; 07.04.2008, 16:37.

  • #2
    bin der lösung jetzt nähergekommen

    PHP-Code:
    $zeichenkette 'Hier ist meine Emailadresse: [email]info@web.de[/email]';
    $suchmuster '/[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}/i';
    $ersetzung '<a href=\"mailto:info@web.de\">info@web.de</a>';
    echo 
    preg_replace($suchmuster$ersetzung$zeichenkette); 
    Jetzt muss ich nur eine Methode finden, die die Emailadresse bestimmt und in einer variable speichert
    Zuletzt geändert von sanktusm; 07.04.2008, 16:42.

    Kommentar


    • #3
      preg_match bzw. preg_match_all sollten dir weiterhelfen.

      mfg
      bugbuster
      tutorial: peterkropff.de schattenbaum.de tut.php-quake.net
      documentation: php.net mysql.com framework.zend.com

      Die Nachtwache!

      Kommentar


      • #4
        Allgemeiner
        PHP-Code:
        $zeichenkette 'Hier ist meine Emailadresse: [email]info@web.de[/email]';
        $suchmuster '/([_\\.\\w-]+@([\\w][\\w-]+.)+[a-z]{2,4})/i';
        $ersetzung "<a href='mailto:$1'>$1</a>";
        echo 
        preg_replace($suchmuster$ersetzung$zeichenkette); 
        Gruss
        H2O

        Kommentar


        • #5
          Re: bin der lösung jetzt nähergekommen

          Original geschrieben von sanktusm

          Jetzt muss ich nur eine Methode finden, die die Emailadresse bestimmt und in einer variable speichert
          Der Zauberspruch versteckt sich bei der Funktionsbeschreibung von preg_replace ... der Lümmel.

          Und der Ausdruck ist im Übrigen wieder ziemlicher Käse. Ein ganzer Haufen gültiger eMail-Adressen wird von ihm nicht erkannt.
          Zuletzt geändert von unset; 07.04.2008, 16:52.
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #6
            vielen dank habe diese lösung gefunden

            PHP-Code:
             $zeichenkette 'Hier ist meine Emailadresse: [email]info@web.de[/email]';
            $suchmuster '/[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}/i';
            preg_match($suchmuster$zeichenkette$trefferPREG_OFFSET_CAPTURE);
            $ersetzung '<a href=\"mailto:'.$treffer[0][0].'\">'.$treffer[0][0].'</a><br><br><br>';
            echo 
            preg_replace($suchmuster$ersetzung$zeichenkette); 
            ist das elegant oder doof

            Kommentar


            • #7
              Du wirfst zweimal die RegExp-Maschine an. Das ist alles andere als Elegant.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Original geschrieben von unset
                Du wirfst zweimal die RegExp-Maschine an. Das ist alles andere als Elegant.
                v.a. weil preg_replace() die gefundenen Teile ja selber kennt.
                Und dass der Ausdruck in meinem Beitrag ungenügend ist, ist mir auch klar, den hab ich vom TS mehr oder weniger übernommen. Ein Regex, der alles abdeckt, wird ganz schön lang. Ein (imho immer noch unvollständiges) Beispiel findest du unter How to Find or Validate an Email Address . Die Frage ist ja - wie so oft in solchen Fällen - wieviel Aufwand man betreiben soll, um auch noch den letzten Spezialfall mitabzudecken.
                Gruss
                H2O

                Kommentar

                Lädt...
                X