如何使用 php 验证学校电子邮件域

How to validate a school email domain with php

我正在尝试验证 php 中以 .ac.uk 结尾的学校电子邮件。我希望能够检查表单中提交的电子邮件是否以 .ac.uk in PHP

结尾

我的PHP代码:

if (empty ($_POST["uni_email"])) {
$emailErr2 = "University email is required";
} else {
  $uemail = $_POST["uni_email"];
  if ( !filter_var($uemail, FILTER_VALIDATE_EMAIL)) {
   $emailErr3 = "Invalid email format";
   echo $emailErr3;
    
}
if (!preg_match('/ac.uk$/', $email)) {

  $emailErr3 = "Invalid university email format";
  echo $emailErr3;

}

我见过使用 checkdnsrr() 函数检查域的方法,但我不确定这是否是正确的方法,因为 .ac.uk 不是域,我想确保它检查域后为.ac.uk。所以有效的电子邮件应该是 bob@email.ac.uk.

而不是最后一个 preg_match,你可以用非正则表达式的方式来做:

if(!endsWith($email, '.ac.uk'))
{
   // here handle your error, email doesn't end with .ac.uk.
   $emailErr3 = "Invalid university email format";
   echo $emailErr3;
}

function endsWith( $haystack, $needle ) {
    $length = strlen( $needle );
    if( !$length ) {
        return true;
    }
    return substr( $haystack, -$length ) === $needle;
}

可能是这样的

演示:http://codepad.org/7PsanZIO

<?php 
$postEmail = 'user@university.ac.uk'; // as $_POST["uni_email"]
if (empty ($postEmail)) {
    $emailErr2 = "University email is required";
} else {
    $uemail = $postEmail;
    if ( !filter_var($uemail, FILTER_VALIDATE_EMAIL)) {
    $emailErr3 = "Invalid email format";
     echo $emailErr3;
    }
}

if (substr(trim($postEmail), -6) === '.ac.uk') {
  echo 'email is correct';
} else {
  $emailErr3 = "Invalid university email format";
  echo $emailErr3;
}
?>