Извлечь название колледжа из домена электронной почты в регистрационную форму - PullRequest
3 голосов
/ 10 августа 2011

Допустим, у меня есть регистрационная форма с проверкой электронной почты только для адресов электронной почты колледжа edu.

Как лучше всего получить название колледжа, используя PHP для вставки в базу данных?

Единственный способ, которым я могу придумать, - это использовать, если адрес College.edu, тогда name = College. Но есть тысячи колледжей, и это не кажется эффективным.

Ответы [ 3 ]

1 голос
/ 10 августа 2011

Я не знаком с .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

Конечно, проблема заключается в поиске поставщика поиска, который будет принимать автоматические запросы.

1 голос
/ 10 августа 2011

Возьмите строку, содержащую значение электронной почты, и разделите ее на «@», а затем на «.».Если третий объект полученного массива равен edu, то добавьте второй объект массива в вашу базу данных.

Будет ли это работать для вас, или я неправильно понимаю ваш запрос?

0 голосов
/ 10 августа 2011

Попробуйте эту функцию:

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

Не Edu Адрес: test3@test.com (com)

Я понимаю, что это, вероятно, не даст вам именно то, что вы просите. Если я положу в МГУ (в качестве примера) это означает, что штат Мисури? Штат Миссисипи? Штат Мичиган? Без поискового массива или какой-либо таблицы msu так же хорошо, как ваша регистрационная форма.

В качестве альтернативы, вы можете предоставить раскрывающийся список, в котором содержатся все колледжи, и предложить пользователю выбрать один, но опять же вы все равно прибегаете к вводу всех названий колледжей.

Редактировать

Эта ссылка может вам помочь: Список доменов edu

...