Php 如何理解电子邮件地址是否为教育电子邮件地址?

Php 如何理解电子邮件地址是否为教育电子邮件地址?,php,email,web,laravel,Php,Email,Web,Laravel,我只希望大学生能够注册我的网站,但我不知道如何控制它。我还希望.edu.fr、edu.tr或其他.edu扩展能够加入我的网站,而不仅仅是.edu的。我正在考虑使用一些注册表,但我找不到任何解决方案。如果有人能帮助我,我会很高兴的 应该没那么重要,但我使用的是带有laravel框架的PHP。没有很好的方法,但一种可能的方法是使用@符号分解地址: // Split the email address into 2 values of an array using the @ symbol as de

我只希望大学生能够注册我的网站,但我不知道如何控制它。我还希望.edu.fr、edu.tr或其他.edu扩展能够加入我的网站,而不仅仅是.edu的。我正在考虑使用一些注册表,但我找不到任何解决方案。如果有人能帮助我,我会很高兴的


应该没那么重要,但我使用的是带有laravel框架的PHP。

没有很好的方法,但一种可能的方法是使用@符号分解地址:

// Split the email address into 2 values of an array using the @ symbol as delimiter.
$emailParts = explode('@', $theEmailAddress);
// If the second part (domain part) contains .edu, period, country code or just .edu, then allow signup.
if (preg_match('/\.edu\.[^.]+$/i', trim($emailParts[1])) || preg_match('/\.edu$/i', trim($emailParts[1]))) {
    // Use the above if you are assuming that the country codes can be any number of characters. If you know for sure country codes are 2 chars, use this condition:
    // (preg_match('/\.edu\.[^.]{2}$/i', trim($emailParts[1])) || preg_match('/\.edu$/i', trim($emailParts[1])))
    // Allow signup
}

当然,这并不保证域或电子邮件地址是现有的

大多数教育机构的域名遵循以下模式:

uni.edu
uni.edu.fr
uni.ac.uk
以下正则表达式涵盖了所有此类情况:

/(\.edu(\.[a-z]+)?|\.ac\.[a-z]+)$/
您可以根据需要将案例添加到正则表达式中。通过发送带有确认链接的自动电子邮件来检查电子邮件是否真实

相应的PHP:

if (preg_match('/(\.edu(\.[a-zA-Z]+)?|\.ac\.[a-zA-Z]+)$/i', $domain)) {
    // allow
}

看看这两个帖子:对我来说,这似乎是一个失败的事业。您不能保证电子邮件将遵循任何格式。例如,我的大学给学生一个ulaval.ca电子邮件地址。