У меня есть регистрационная форма, в которой для регистрации используются любые электронные письма. Я хочу ограничить его только идентификатором электронной почты компании. Другими словами, никакой почтовый идентификатор бесплатного почтового сервиса не будет работать для регистрации.
Поскольку вы не указали какую-либо дополнительную информацию о том, как адреса электронной почты определяются и / или вводятся в форму или нет, я предоставляю следующее с помощью preg_match() PHP, а также разделителей шаблонов b и i и массива.
b – граница слова
i – нечувствительный к регистру
Следующее будет соответствовать «gmail» или «Gmail» и т. Д., Если кто-то захочет обмануть систему.
Включая Hotmail, Yahoo. Вы можете добавить в массив.
<?php $_POST['email'] = "email@Gmail.com"; $data = $_POST['email']; if(preg_match("/\b(hotmail|gmail|yahoo)\b/i", $data)){ echo " Found free Email service."; exit; } else{ echo "No match found for free Email service."; exit; }
На самом деле вы можете использовать:
if(preg_match("/(hotmail|gmail|yahoo)/i", $data))
вместо:
if(preg_match("/\b(hotmail|gmail|yahoo)\b/i", $data))
что дало те же результаты.
Как насчет белого / черного списка доменов, например:
$domainWhitelist = ['companydomain.org', 'companydomain.com']; $domainBlacklist = ['gmail.com', 'hotmail.com']; $domain = array_pop(explode('@', $email)); //white list if(in_array($domain, $domainWhitelist)) { //allowed } //black list if(!in_array($domain, $domainBlacklist)) { //allowed }