メールアドレスぶっこ抜きのもっと強欲パターン
お前の予定!では、メールのヘッダーや本文からメールアドレスを抽出する必要があります。複数のメールアドレスも簡単に抜き出せる正規表現を紹介します。
ちなみにこのパターンはグーグル先生のご紹介によるものです。大崎さんありがとうございます。
Mail::mimeDecodeのラッパを作った時に使用した正規表現です。
<?php /** * STATIC * 文字列の中からemailアドレスっぽいものだけを抽出して返します。 * emailアドレスっぽいものの正規表現をあらためた * see. http://red.ribbon.to/~php/memo_003.php * * @access public * @param string $raw_string * @return string $mail_addresses メールアドレスっぽいものを複数あれば,(カンマ)区切りで */ function extractionEmails( $raw_string ) { /* * emailアドレスっぽい正規表現 * see. http://red.ribbon.to/~php/memo_003.php */ $email_regex_pattern = '/(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*\])(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*\]))*/'; if ( preg_match_all( $email_regex_pattern, $raw_string, $matches, PREG_PATTERN_ORDER ) ) { if ( isset($matches[0]) ) { return implode( ",", $matches[0] ); } } return null; } ?>