假设我有一个注册表单,其中包含仅针对大学edu电子邮件地址设置的电子邮件验证。
使用PHP将大学名称插入数据库的最佳方法是什么?
我能想到的唯一方法就是使用if.edude地址,然后是name = college。但是有成千上万的大学,这似乎并不高效。
答案 0 :(得分:1)
获取包含电子邮件值的字符串并将其拆分为“@”,然后拆分为“。”。如果结果数组的第三个对象等于edu,则将数组的第二个对象添加到数据库中。
这对您有用还是我误解了您的询问?
答案 1 :(得分:1)
我不熟悉.edu
顶级域名,但我认为注册人必须在其whois记录中提供有效信息,因此定期搜索isis可能是一个起点。例如,http://whois.domaintools.com/stanford.edu显示:
Domain Name: STANFORD.EDU
Registrant:
Stanford University
The Board of Trustees of the Leland Stanford Junior University
241 Panama Street, Pine Hall, Room 115
Stanford, CA 94305-4122
UNITED STATES
当然,问题是找到一个接受自动查询的搜索服务提供商。
答案 2 :(得分:0)
尝试此功能:
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>");
}
输出:
学院:大学
College:bobstruckingacademy
不是Edu地址:test3@test.com(com)
我明白这可能不会让你得到你所要求的。如果我输入密歇根州立大学(作为一个例子),那是否意味着密苏里州?密西西比州?密歇根州?如果没有查找数组或某种表格,“msu”就像您的注册表格一样好。
或者,你可以提供一个包含所有大学的下拉菜单并让用户选择一个,但是你仍然可以输入所有的大学名字。
修改强>
此链接可以为您提供帮助:List of edu Domains