Попробуйте эту функцию:
function getDomainParts($email) {
$posDom = strrpos($email, "@");
$posTLD = strrpos($email, ".");
return array(
"tld" => substr($email, $posTLD+1),
"domain" => substr($email, $posDom+1, $posTLD-$posDom-1)
);
}
$tests = array(
"test1@college.edu",
"test2@bobstruckingacademy.edu",
"test3@test.com"
);
foreach($tests as $k => $v) {
$temp = getDomainParts($v);
if($temp['tld'] == "edu")
echo("College: " . $temp['domain'] . "<br>");
else
echo("Not Edu Address: " . $v . " (" . $temp['tld'] . ")<br>");
}
Выход:
Колледж: колледж
Колледж: bobstruckingacademy
Не Edu Адрес: test3@test.com (com)
Я понимаю, что это, вероятно, не даст вам именно то, что вы просите. Если я положу в МГУ (в качестве примера) это означает, что штат Мисури? Штат Миссисипи? Штат Мичиган? Без поискового массива или какой-либо таблицы msu так же хорошо, как ваша регистрационная форма.
В качестве альтернативы, вы можете предоставить раскрывающийся список, в котором содержатся все колледжи, и предложить пользователю выбрать один, но опять же вы все равно прибегаете к вводу всех названий колледжей.
Редактировать
Эта ссылка может вам помочь: Список доменов edu