与えられた電子メールのリスト、フォーマット:
"FirstName Last" <email@address.com>, "NewFirst NewLast" <email2@address.com>
これをメールアドレスのみの文字列配列に組み込むにはどうすればよいですか(名前は必要ありません)。
PHPのMailparse拡張機能には、試してみたいmailparse_rfc822_parse_addresses
機能があります。それ以外の場合は、独自のアドレスパーサーを作成する必要があります。
あなたはpreg_match_all
(docs)を使うことができます:
preg_match_all('/<([^>]+)>/', $s, $matches);
print_r($matches); // inspect the resulting array
すべてのアドレスがで囲まれている場合、文字列< ... >
は必要ありません。explode()
$s
編集コメントに応じて、正規表現は。として書き直すことができます'/<([^@]+@[^>]+)>/'
。ただし、これがフェイルセーフかどうかはわかりません:)
編集#2重要なデータにはパーサーを使用します(以下のコメントを参照してください-電子メールアドレスの解析は雌犬です)。ただし、重複するアドレスを削除することで、一部のエラーを防ぐことができます。
<?php
$s = "\"FirstName Last\" <email@address.com>, \"NewFirst NewLast\" <email2@address.com>";
$emails = array();
foreach (split(",", $s) as $full)
{
preg_match("/.*<([^>]+)/", $full, $email);
$emails[] = $email[1];
}
print_r($emails);
?>