php проверяет адрес электронной почты на основе имени домена

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

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

 $blacklist = array('yahoo-inc.com', 'facebook.com', ...); if (in_array($domain, $blacklist)) { // bad domain } else { // good domain } 

Добавляем к @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 } 

Ну, вот очень простой способ сделать это, VALID-адрес электронной почты должен содержать только один символ @ , поэтому в течение всего времени проверки вы можете просто взорвать строку на @ и собрать второй сегмент.

Пример:

 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; } }