2012-04-10 5 views
1

In meinem SQL habe ich einige Zeilen, die E-Mail-Absender enthält. Diese Absender sind String und nicht über Spalten getrennt.PHP-Regex für explodierende E-Mail-Empfänger

Dies ist ein Beispiel aus meiner Zeile.

Wie Sie seinen Klartext sehen und bereit für die Explosion. Ich kann es mit Komma explodieren und sie trennen.

Aber heute wurde mir klar, dieses Beispiel:

"Test, Example" <[email protected]>, "Second Person" <[email protected]>, [email protected] 

Wie Sie sehen, Test ein Komma in ihrem Namen hat. Wenn ich also explodiere, wird auch Test explodieren. Dies wird einen Fehler verursachen.

Ich habe einige Regex versucht, aber ohne Glück. Könnte mir jemand die beste Regex vorschlagen, um sie zu explodieren, aber keine Namen?

FYI, Namen immer in "" Tag. Also Kommas nicht.

Ich muss einfach übergeben, wenn Komma ist in zitiert.

Antwort

2
explode('>, "', $emails); 

und fügen Sie die explodierte Zeichen danach - oder, besser noch, verwenden imap_rfc822_parse_adrlist().

+0

+1 für 'imap_rfc822_parse_adrlist()' angezeigt werden müssen. Wahrscheinlich der beste Weg, dies zu tun. –

+0

Ich mag die 'imap_rfc822_parse_adrlist()' Lösung, aber die Explosion ist keine gute Idee. Wenn Leerzeichen zwischen '>' und ',' stehen, funktioniert es nicht. –

+0

@ColinHebert: FTR, ich mag es auch nicht. Ich dachte nur, wenn es eine gute Lösung gibt, sollte ich nicht viel Zeit mit einem nervigen verlieren. Das OP sollte definitiv "imap_rfc822_parse_adrlist" verwenden. –

0

Vielleicht sollten Sie Ihre Daten in der Datenbank validieren, damit der Name eines Benutzers kein "," (oder andere Symbole) enthalten kann.

Sie wollen nicht Ihre Benutzer Ihre Formatierungs Anzeige diktierte, sollten Sie den Text selbst zu formatieren, wenn Sie es

Verwandte Themen