2011-08-10 42 views
3

假設我有一個註冊表單,其中包含僅針對大學edu電子郵件地址設置的電子郵件驗證。以註冊形式從電子郵件域名中提取大學名稱

什麼是使用PHP插入到數據庫中獲得大學名稱的最佳方式?

我能想到的唯一方法就是使用college.edu地址,然後name = college。但有成千上萬的大學,這似乎並不高效。

+1

http://whoisxmlapi.com/ – ajreal

回答

1

取出包含電子郵件值的字符串,並將其拆分爲「@」和「。」。如果結果數組的第三個對象等於edu,則將該數組的第二個對象添加到數據庫中。

會爲你工作還是誤解你的詢問?

+0

感謝您的快速響應!我所遇到的心理障礙是大多數大學的電子郵件域名沒有格式化或縮寫,我無法想出如何從電子郵件地址中獲得正確的格式,而無需輸入2000個大學。 我能想到的唯一方法就是擁有一個名稱和域的數組,這需要我輸入2000,或者讓用戶必須請求添加一個不同的動物學院一起 – Jack

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(
    "[email protected]", 
    "[email protected]", 
    "[email protected]" 
); 

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

不埃杜地址:[email protected](COM)

我明白,這可能不會完全讓你確切地問你在問什麼。如果我加入MSU(例如)是否意味着米蘇里州?密西西比州?密歇根州?如果沒有查詢數組或某種表格,「msu」與您的註冊表格一樣好。

或者,您可以提供一個包含所有學院的下拉菜單,並讓用戶選擇一個,但是您仍然要求輸入所有大學名稱。

編輯

此鏈接可以幫助你:List of edu Domains

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 

當然,問題是找到一個搜索提供商將接受自動查詢。

相關問題