Wenn Email in Text Email mit mailto: link ersetzen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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); 
    Last edited by sanktusm; 07-04-2008, 15: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
    Last edited by sanktusm; 07-04-2008, 15:42.

    Comment


    • #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!

      Comment


      • #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

        Comment


        • #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.
          Last edited by unset; 07-04-2008, 15:52.
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Comment


          • #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

            Comment


            • #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

              Comment


              • #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

                Comment

                Working...
                X