php подтвердить адрес электронной почты на основе доменного имени - PullRequest
1 голос
/ 28 февраля 2011

Мне нужно отфильтровать какой-либо адрес электронной почты на основе доменного имени: в основном, если доменное имя - yahoo-inc.com, facebook.com, baboo.com .. (и несколько других), функция должна что-то делать, и еслидомен другой, он должен делать что-то еще.Единственный способ, которым я знаю, - это использовать шаблон / регулярное выражение с preg_match_all и создавать наблюдения / условия для каждого домена, занесенного в список (например, если domain = yahoo-inc), сделать это в противном случае (domain == facebook.com) сделать это ..и т. д., но мне нужно знать, есть ли более простой / краткий способ включить все домены, которые я хочу отфильтровать, в одну переменную / массив, а затем применить только 2 условия (например, если электронная почта находится в черном списке {сделать что-то}еще {сделать что-то еще}

Ответы [ 3 ]

2 голосов
/ 28 февраля 2011

Добавление к @Alnitak здесь - полный код, чтобы сделать то, что вам нужно

$domain = explode("@", $emailAddress);
$domain = $domain[(count($domain)-1)];
$blacklist = array('yahoo-inc.com', 'facebook.com', ...);
if (in_array($domain, $blacklist)) {
    // bad domain
} else {
    // good domain
}
2 голосов
/ 28 февраля 2011

Извлеките часть домена (т. Е. Все, что находится после последнего '@'), уберите ее в нижнем регистре и затем используйте in_array, чтобы проверить, есть ли она в вашем черном списке:

$blacklist = array('yahoo-inc.com', 'facebook.com', ...);
if (in_array($domain, $blacklist)) {
    // bad domain
} else {
    // good domain
}
1 голос
/ 28 февраля 2011

Что ж, вот очень простой способ сделать это, ДЕЙСТВИТЕЛЬНЫЙ адрес электронной почты всегда должен содержать только один символ @, поэтому при проверке вы можете просто взорвать строку на @ и собрать второй сегмент.

Пример:

if (filter_var($user_email, FILTER_VALIDATE_EMAIL))
{
    //Valid Email:
    $parts = explode("@",$user_email);

    /*
         * You may want to use in_array if you already have a compiled array
         * The switch statement is mainly used to show visually the check.
    */
    switch(strtolower($parts[1]))
    {
         case 'facebook.com':
         case 'gmail.com':
         case 'googlemail.com':
             //Do Something
         break;
         default:
             //Do something else
         break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...