3

大学教育用の電子メール アドレスのみが設定された電子メール検証を含む登録フォームがあるとします。

そこからPHPを使用して大学名を取得し、データベースに挿入する最良の方法は何でしょうか?

私が考えることができる唯一の方法は、 if college.edu address, then name = college を使用することです。しかし、何千もの大学があり、効率的ではないようです。

4

3 に答える 3

1

メールの値を含む文字列を取得し、「@」で分割してから「.」で分割します。結果の配列の 3 番目のオブジェクトが edu と等しい場合、配列の 2 番目のオブジェクトをデータベースに追加します。

それはあなたのために働くでしょうか、それとも私はあなたの質問を誤解していますか?

于 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' は登録フォームと同じくらい優れています。

または、すべての大学を含むドロップダウンを提供し、ユーザーに 1 つを選択させることもできますが、それでもすべての大学名を入力する必要があります。

編集

このリンクが役立つ場合があります: edu ドメインのリスト

于 2011-08-10T18:07:17.403 に答える