2012-04-10 14 views
1

私のSQLでは、電子メール送信者を含むいくつかの行があります。送信者は文字列であり、列を介して区切られません。電子メール受信者を爆発させるためのPHP正規表現

これは私の行の1つの例です。

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

ご覧のとおり、爆発の可能性があります。私はカンマでそれを爆発させ、それらを分離することができます。

しかし、今日、私はこの例を実現:

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

ご覧のとおり、テストは、その名前にカンマがあります。だから私がそれを爆発させると、Testも爆発するでしょう。これによりエラーが発生します。

正規表現を試しましたが、運はありませんでした。誰も私にそれらを爆発させる最高の正規表現を提案することができますが、名前はありません。

FYIの名前は常に"タグです。だからコンマはありません。

の場合は、の場合はになります。

答えて

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

その後、分解された文字を追加してください。imap_rfc822_parse_adrlist()を使用することをお勧めします。

+0

+1を表示する必要があるときは、ユーザーがあなたの書式設定の表示を規定たくない

は、あなたがテキストを自分でフォーマットする必要があります。おそらくこれを行うための最良の方法です。 –

+0

私は 'imap_rfc822_parse_adrlist()'が好きですが、爆発は良い考えではありません。 '>'と '、'の間にスペースがあると、動作しません。 –

+0

@ColinHebert:FTR、私はそれも好きではありません。私はちょうどいい解決策があると思っていました。私は時代遅れのもので多くの時間を無駄にしてはいけません。 OPは確実に 'imap_rfc822_parse_adrlist'を使うべきです。 –

0

おそらく、あなたのデータをデータベースに検証して、誰かの名前に "、"(または他の記号も含む)を入れることはできません。あなたは `imap_rfc822_parse_adrlist()`のためにそれを

関連する問題