To: および From: 生の電子メール ヘッダーには、多くの受け入れ可能な電子メール アドレス形式があるようです ...
person@place.com
person <person@place.com>
person
Another Person <person@place.com>
'Another Person' <person@place.com>
"Another Person" <person@place.com>
名前とアドレスを分割する効果的な PHP 関数が見つからなかったので、次のコードを作成しました。
コードパッドでDEMO ITを実行して、出力を確認できます...
// validate email address
function validate_email( $email ){
return (filter_var($email, FILTER_VALIDATE_EMAIL)) ? true : false;
}
// split email into name / address
function email_split( $str ){
$name = $email = '';
if (substr($str,0,1)=='<') {
// first character = <
$email = str_replace( array('<','>'), '', $str );
} else if (strpos($str,' <') !== false) {
// possibly = name <email>
list($name,$email) = explode(' <',$str);
$email = str_replace('>','',$email);
if (!validate_email($email)) $email = '';
$name = str_replace(array('"',"'"),'',$name);
} else if (validate_email($str)) {
// just the email
$email = $str;
} else {
// unknown
$name = $str;
}
return array( 'name'=>trim($name), 'email'=>trim($email) );
}
// test it
$tests = array(
'person@place.com',
'monarch <themonarch@tgoci.com>',
'blahblah',
"'doc venture' <doc@venture.com>"
);
foreach ($tests as $test){
echo print_r( email_split($test), true );
}
ここで何か不足していますか?誰かがより良い方法をお勧めできますか?