Email-Adresse aufsplitten
Gustav Meier
- php
0 Alex0 Steel0 suit1 Der Martin0 Steel0 Der Martin0 Steel
2 Jens Holzkämper
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
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
Moin!
In Diesem Fall ist evtl. explode auch in Betracht zu ziehen, da regulaere Ausdruecke eher nicht benoetigt werden.
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.
Wenn der name aber zusammengeschreiben wird, dann gehts hast du bez. dem Namen eh ein Problem, weil den kannst du dann nicht aufsplitten.
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?
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
Ich splitte am ".
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
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 KlammernDie 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.
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 KlammernDie 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
Tach,
ich habe in einem String eine Mailadresse in der Form stehen:
"Gustav Meier" demo@mailer.deWie 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