Там, кажется, много форматов приемлемы адресов электронной почты в поле Кому: и С: сырыми заголовками электронной почты ...Разделить полные адреса электронной почты на имя и адрес электронной почты?
[email protected]
person <[email protected]>
person
Another Person <[email protected]>
'Another Person' <[email protected]>
"Another Person" <[email protected]>
После не найти какие-либо эффективные PHP функций для расщепления из имен и адреса, я написал следующий код.
Вы можете DEMO IT ON CODEPAD, чтобы увидеть выход ...
// 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(
'[email protected]',
'monarch <[email protected]>',
'blahblah',
"'doc venture' <[email protected]>"
);
foreach ($tests as $test){
echo print_r(email_split($test), true);
}
Я пропускаю здесь что-нибудь? Может ли кто-нибудь порекомендовать лучший способ?
Это выглядит потрясающе! Я пробовал его на кодовом коде ... http://codepad.org/TZUBdGjQ .. но я получаю сообщение об ошибке «Неизвестный модификатор« g ». Предложения? – neokio
Я пробовал это в своей тестовой среде (версия PHP 5.4.3) для кода, который я использовал и выводил, я получил -> проверить редактирование. –
отличное решение! – neokio