0

与えられた電子メールのリスト、フォーマット:

  "FirstName Last" <email@address.com>, "NewFirst NewLast" <email2@address.com>

これをメールアドレスのみの文字列配列に組み込むにはどうすればよいですか(名前は必要ありません)。

4

3 に答える 3

3

PHPのMailparse拡張機能には、試してみたいmailparse_rfc822_parse_addresses機能があります。それ以外の場合は、独自のアドレスパーサーを作成する必要があります。

于 2009-12-02T15:05:31.227 に答える
2

あなたはpreg_match_alldocs)を使うことができます:

preg_match_all('/<([^>]+)>/', $s, $matches);
print_r($matches); // inspect the resulting array

すべてのアドレスがで囲まれている場合、文字列< ... >は必要ありません。explode()$s


編集コメントに応じて、正規表現は。として書き直すことができます'/<([^@]+@[^>]+)>/'。ただし、これがフェイルセーフかどうかはわかりません:)


編集#2重要なデータにはパーサーを使用します(以下のコメントを参照してください-電子メールアドレスの解析は雌犬です)。ただし、重複するアドレスを削除することで、一部のエラーを防ぐことができます。

于 2009-12-02T14:57:46.360 に答える
1
<?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);
?>
于 2009-12-02T14:53:37.320 に答える