假设我有一个注册表单,其中仅设置了大学教育电子邮件地址的电子邮件验证。
使用 PHP 将大学名称插入数据库的最佳方法是什么?
我能想到的唯一方法是使用如果college.edu 地址,那么name = 大学。但是有成千上万的大学,这似乎没有效率。
获取包含电子邮件值的字符串并将其拆分为“@”,然后拆分为“.”。如果结果数组的第三个对象等于 edu,则将数组的第二个对象添加到数据库中。
这对你有用还是我误解了你的询问?
我不熟悉.edu
顶级域,但我认为注册人必须在其 whois 记录中提供有效信息,因此可以从常规 whois 搜索开始。例如,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
当然,问题在于找到一个可以接受自动查询的搜索提供程序。
试试这个功能:
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
非教育地址:test3@test.com (com)
我知道这可能无法让您完全了解您的要求。如果我输入 MSU(例如),这是否意味着密苏里州?密西西比州?密歇根州?如果没有某种查找数组或表格,'msu' 就像您的注册表单一样好。
或者,您可以提供一个包含所有大学的下拉列表并让用户选择一个,但是您仍然需要输入所有大学名称。
编辑
此链接可能对您有所帮助:edu 域列表