3

假设我有一个注册表单,其中仅设置了大学教育电子邮件地址的电子邮件验证。

使用 PHP 将大学名称插入数据库的最佳方法是什么?

我能想到的唯一方法是使用如果college.edu 地址,那么name = 大学。但是有成千上万的大学,这似乎没有效率。

4

3 回答 3

1

获取包含电子邮件值的字符串并将其拆分为“@”,然后拆分为“.”。如果结果数组的第三个对象等于 edu,则将数组的第二个对象添加到数据库中。

这对你有用还是我误解了你的询问?

于 2011-08-10T17:47:48.943 回答
1

我不熟悉.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

当然,问题在于找到一个可以接受自动查询的搜索提供程序。

于 2011-08-10T18:35:23.743 回答
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>");
}

输出:

学院:学院

学院:bobstruckingacademy

非教育地址:test3@test.com (com)

我知道这可能无法让您完全了解您的要求。如果我输入 MSU(例如),这是否意味着密苏里州?密西西比州?密歇根州?如果没有某种查找数组或表格,'msu' 就像您的注册表单一样好。

或者,您可以提供一个包含所有大学的下拉列表并让用户选择一个,但是您仍然需要输入所有大学名称。

编辑

此链接可能对您有所帮助:edu 域列表

于 2011-08-10T18:07:17.403 回答