Gustav Meier: Email-Adresse aufsplitten

Hallo,

ich habe in einem String eine Mailadresse in der Form stehen:
"Gustav Meier" demo@mailer.de

Wie kann ich es mittels PHP bewerkstelligen, dass ich den Namen (Gustav Meier) und die Mailadresse (demo@mailer.de) einzeln bekomme?
Bin leider Anfänger.

Danke schön

  1. Hallo,

    Wie kann ich es mittels PHP bewerkstelligen, dass ich den Namen (Gustav Meier) und die Mailadresse (demo@mailer.de) einzeln bekomme?
    Bin leider Anfänger.

    Dann beschäftige dich doch mal mit regulären Ausdrücken und mit preg_match()

    Gruß
    Alex

    1. Moin!
      In Diesem Fall ist evtl. explode auch in Betracht zu ziehen, da regulaere Ausdruecke eher nicht benoetigt werden.

      --
      Vergesst Chuck Norris.
      Sponge Bob kann unter Wasser grillen!
      1. In Diesem Fall ist evtl. explode auch in Betracht zu ziehen, da regulaere Ausdruecke eher nicht benoetigt werden.

        preg_split() oder preg_match_all() ist ggf. doch etwas eleganter, da kann man alles in "einem Rutsch" erledigen.

        1. Wenn der name aber zusammengeschreiben wird, dann gehts hast du bez. dem Namen eh ein Problem, weil den kannst du dann nicht aufsplitten.

          1. Wenn der name aber zusammengeschreiben wird, dann gehts hast du bez. dem Namen eh ein Problem, weil den kannst du dann nicht aufsplitten.

            Und wo stand das als Anforderung?

      2. Hallo,

        In Diesem Fall ist evtl. explode auch in Betracht zu ziehen, da regulaere Ausdruecke eher nicht benoetigt werden.

        an welchem Zeichen willst du splitten? Am Leerzeichen?
        Ungünstig, dann trennst du nämlich auch Vor- und Nachnamen und bekommst im Beispiel drei Teile:

        "Gustav
          Meier"
          demo@example.org

        Nun musst du von n Fragmenten alle bis auf eines wieder zusammenfügen, dabei die Anführungszeichen abmontieren, und vom letzten Fragment auch noch die spitzen Klammern entfernen.
        Und zu allem Überfluss ist der in Anführungszeichen stehende Klartextname ja komplett optional, und wenn er nicht genutzt wird, können auch die spitzen Klammern um die Mailadresse entfallen.

        Man sieht also, dass es mit explode() allein nicht getan ist; ein RegEx ist hier aber sicher auch nicht trivial.

        @Gustav: Auch dir sei RFC 2606 wärmstens ans Herz gelegt. Die Domain mailer.de, die du hier als Beispiel missbrauchst, ist bereits vergeben, und ich glaube nicht, dass du der Inhaber bist.
        Bitte verwende für Beispielzwecke in Zukunft die extra dafür vorgesehenen Domainnamen.

        Ciao,
         Martin

        --
        Der Alptraum jedes Computers:
        "Mir war, als hätte ich gerade eine 2 gesehen."
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Ich splitte am ".

          --
          Vergesst Chuck Norris.
          Sponge Bob kann unter Wasser grillen!
          1. Hi,

            Ich splitte am ".

            Auf die Idee wäre ich nicht gekommen. Dann bekommst du der Reihe nach:
             * einen Leerstring - kann man ignorieren
             * den Klartextnamen am Stück - das ist gut
             * die Mailadresse mit einem führenden Leerzeichen und den spitzen Klammern

            Die Mailadresse musst du also noch ein bisschen nachbehandeln, und den Sonderfall, dass der Klartextname fehlt, musst du auch noch getrennt behandeln.

            Ciao,
             Martin

            --
            Soziologen sind nützlich, aber keiner will sie haben.
            Bei Informatikern ist es gerade umgekehrt.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Moin,

              Ich splitte am ".

              Auf die Idee wäre ich nicht gekommen. Dann bekommst du der Reihe nach:
              * einen Leerstring - kann man ignorieren
              * den Klartextnamen am Stück - das ist gut
              * die Mailadresse mit einem führenden Leerzeichen und den spitzen Klammern

              Die Mailadresse musst du also noch ein bisschen nachbehandeln, und den Sonderfall, dass der Klartextname fehlt, musst du auch noch getrennt behandeln.

              Korrekt. Da nach dem Namen gefragt war, gehe ich davon aus, daß alles ausser dem Namen egal ist. Er wird, so nehme ich an, auch immer vorhanden sein. Eine Prüfung auf einen Leerstring würde ich dennoch einbauen. Das dürfte bei entsprechend großer Zahl von Adressen sogar etwas schneller sein, als mit RegExp. Ich mag allerdings die von Jens gepostet Lösung lieber. Darauf wär ich echt nicht gekommen, weil ich es gewohnt bin, sowas manuell machen zu müssen.

              --
              Vergesst Chuck Norris.
              Sponge Bob kann unter Wasser grillen!
              1. Hallo Steel,

                * einen Leerstring - kann man ignorieren
                * den Klartextnamen am Stück - das ist gut
                * die Mailadresse mit einem führenden Leerzeichen und den spitzen Klammern

                Die Mailadresse musst du also noch ein bisschen nachbehandeln, und den Sonderfall, dass der Klartextname fehlt, musst du auch noch getrennt behandeln.
                Korrekt. Da nach dem Namen gefragt war, gehe ich davon aus, daß alles ausser dem Namen egal ist.

                ich nicht, denn im Startposting heißt es:

                [...] dass ich den Namen (Gustav Meier) und die Mailadresse (demo@mailer.de) einzeln bekomme?

                Der OP möchte also beide Angaben.

                Er wird, so nehme ich an, auch immer vorhanden sein. Eine Prüfung auf einen Leerstring würde ich dennoch einbauen.

                Sagen wir mal so: Wenn der Name zwar vorhanden ist, aber die Länge 0 hat (also "" someone@example.org), läuft dein Ansatz problemlos durch. Ich meinte aber den Fall, dass der Namensteil vorn komplett fehlt, einschließlich der Anführungszeichen. Ich ging davon aus, dass es sich um ein Rudel RFC-822-konformer Mailadressen handelt, bei denen das ja gern der Fall sein darf.

                Ich mag allerdings die von Jens gepostet Lösung lieber. Darauf wär ich echt nicht gekommen, weil ich es gewohnt bin, sowas manuell machen zu müssen.

                Full ACK.

                Ciao,
                 Martin

                --
                why the heck do you jerk think, that wir ein doppelposting nicht bemerken, wenn you zwischendurch the sprache wechselst?
                  (wahsaga)
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Tach,

    ich habe in einem String eine Mailadresse in der Form stehen:
    "Gustav Meier" demo@mailer.de

    Wie kann ich es mittels PHP bewerkstelligen, dass ich den Namen (Gustav Meier) und die Mailadresse (demo@mailer.de) einzeln bekomme?

    es gibt zum Beispiel imap_rfc822_parse_adrlist.

    mfg
    Woodfighter