Php 从注册表中的电子邮件域中提取学院名称

Php 从注册表中的电子邮件域中提取学院名称,php,mysql,database,whois,Php,Mysql,Database,Whois,比如说,我有一个只设置了大学教育电子邮件地址的带有电子邮件验证的登记表 使用PHP将学院名称插入数据库的最佳方法是什么 我能想到的唯一方法是使用if college.edu address,然后name=college。但是有数千所大学,这似乎效率不高。将包含电子邮件值的字符串在“@”处拆分,然后在“.”处拆分。如果结果数组的第三个对象等于edu,则将数组的第二个对象添加到数据库中 这对你有用还是我误解了你的询问?试试这个功能: function getDomainParts($email) {

比如说,我有一个只设置了大学教育电子邮件地址的带有电子邮件验证的登记表

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


我能想到的唯一方法是使用if college.edu address,然后name=college。但是有数千所大学,这似乎效率不高。

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

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

试试这个功能:

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>");
}
函数getDomainParts($email){ $posDom=strrpos($email,“@”); $posTLD=strrpos($email,“.”); 返回数组( “tld”=>substr($email$posTLD+1), “域”=>substr($email、$posDom+1、$posTLD-$posDom-1) ); } $tests=数组( "test1@college.edu", "test2@bobstruckingacademy.edu", "test3@test.com" ); foreach($k=>v的测试){ $temp=getDomainParts($v); 如果($temp['tld']==“edu”) echo(“学院:.$temp['domain']”“
”; 其他的 echo(“非教育单位地址:”.$v.(“$temp['tld'])”)
”; } 输出:

学院:学院

学院:bobstruckingacademy

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

我知道这可能不会让你得到你想要的。如果我把MSU作为一个例子,这是否意味着密苏里州?密西西比州?密歇根州?如果没有某种类型的查找数组或表,“msu”就和您的注册表一样好

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

编辑


此链接可能会帮助您:

我不熟悉
.edu
顶级域名,但我认为注册人必须在其whois记录中提供有效信息,因此定期whois搜索可能是一个起点。例如,显示以下内容:

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

当然,问题在于找到一个能够接受自动查询的搜索提供商。

感谢您的快速响应!我遇到的心理障碍是,大多数大学电子邮件域没有格式化或缩写,我很难想出如何在不输入2000所大学的情况下从电子邮件地址中获得正确的格式。我能想到的唯一方法是使用一个带有名称和域的数组,这将要求我键入2000,或者让用户请求添加一个学院,这是一个完全不同的动物