suchen + ersetzen

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

  • suchen + ersetzen

    Hi,

    ich habe da eine Zeichenkette, meinetwegen:
    $meine_kette = "bla bla bla bla test@test.de bla bla";

    für die Ausgabe in HTML soll die e-Mail-Adresse aber
    anklickbar sein...wie mache ich dass?

    danke.

    Gruß
    Thomas
    Gruß
    Thomas

  • #2
    $kette = "mailto:blabla@gmx.de";
    echo "<a href=\"$kette\">Mail an blabla</a>";

    Kommentar


    • #3
      echo eregi_replace ('([-a-z0-9.]*@[-a-z0-9.]*)', '<a href="mailto:\\0">\\0</a>', $meine_kette);

      funktioniert auch mit mehreren Adressen in einem String, allerdings ist die Syntax-Prüfung nicht ganz vollständig: a@b wird z.B. auch als eMail-Adresse erkannt.

      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        naja,
        hier ein regulärer Ausdruck der das erkennt Dont Panic ist nicht von mir

        ^[a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$


        Ich liebe sie

        Kommentar


        • #5
          gibt ein Problem ...

          ^ heißt Zeilenanfang
          $ heißt Zeilen- (oder String-)Ende

          der ist im String aber nicht gegeben, da die eMail-Adresse mitten im String steht.
          Laß also die beiden Zeichen weg, dann hast du nur noch ein Problem.
          test@test.test wird nämlich zur eMail-Adresse test@test.tes, das t dahinter gehört dann nicht mehr dazu.

          Ich bin auch noch auf der Suche nach einer Lösung für dieses Problem, aber alleine mit eregi_replace wird es nicht möglich sein.

          Sinniger wär wohl, sich die Matches mit {2,} statt {2,3} zu suchen und dann diese einzeln auf korrekte Syntax zu prüfen. Geht sicher gut einfach mit split, ich werd beizeiten nochmal basteln und das komplette Teil als Snippet zur Verfügung stellen.
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            cool...

            ...das klappt ja schon ganz gut ;-) Danke!

            kann man bei regulären Ausdrücken auch nach dem Leerzeichen
            suchen? Das wäre doch das Kriterium um zu entscheiden ob
            die tld echt oder fake ist (vier und mehr Zeichen).
            Einfach [ ] tuts irgendwie nicht so richtig.
            o.k. man hat dann das Leerzeichen auch im Adress-Tag...

            ;-/ da fällt mir gerade ein - wann kommt der ganze .info Krempel eigentlich?!

            Gruß
            Thomas
            Gruß
            Thomas

            Kommentar


            • #7
              Also reguläre Ausdrücke sind so das seltsamste was ich je im Programmieren gelernt habe, naja lerne.

              Wieso schneidet der das letzte t ab ? Ich könnte als wahnsinnig werden bei so dingern

              Kommentar


              • #8
                Das letzte t bei test@test.test wird abgeschnitten, weil dein regulärer Ausdruck bei der TLD (also beim letzten Teilstring) maximal drei Zeichen zuläßt, und das sind 'tes'.
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar


                • #9
                  hmm, aber mehr soind ja nicht erlaubt meines wissens, also nimmt er ungültige Addys erst garnicht, ist doch okay oder ?

                  Kommentar


                  • #10
                    geht vielleicht besser...

                    ...aber funktioniert ;-)
                    Dank der Anregung von Titus hab ich das hier gebastelt:

                    Code:
                    $meine_kette = eregi_replace ("<BR>", " ZEILENUMBRUCH ", $meine_kette);
                    $meine_kette = str_replace("\n"," ZEILENUMBRUCH ",$meine_kette);
                    $kette_array = split(" ","$meine_kette");
                    
                    function make_link($teil){
                    $teil = eregi_replace ('^[a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3}|info)$', '<a href="mailto:\\0">\\0</a>', $teil);
                    $teil = eregi_replace ('^http://([a-zA-Z0-9]+\.)+([a-zA-Z]{2,3}}|info)$', '<a href="\\0" TARGET="_blank">\\0</a>', $teil);
                    $teil = eregi_replace ('^www.([a-zA-Z0-9]+\.)+([a-zA-Z]{2,3}}|info)$', '<a href="http://\\0" TARGET="_blank">\\0</a>', $teil);
                    $teil = eregi_replace ('^([a-zA-Z0-9]+\.)+([a-zA-Z]{2,3}}|info)$', '<a href="http://\\0" TARGET="_blank">\\0</a>', $teil);
                    return $teil;
                    }
                    
                    array_walk($kette_array, "make_link");
                    
                    $meine_kette = implode(" ", $kette_array);
                    $meine_kette = eregi_replace (" ZEILENUMBRUCH ", "<BR>", $meine_kette);
                    [Editiert von Thomas am 16-08-2001 um 23:06]
                    Gruß
                    Thomas

                    Kommentar

                    Lädt...
                    X