如何从 PHP 中的电子邮件 ID 数组中检查具有特定域的电子邮件 ID?

How to check email id's with specific domain from the array of email id's in PHP?

我有一组电子邮件 ID。我想检查每个电子邮件 ID 的域。 实际上,只要发现没有“.edu”域的电子邮件 ID,我就必须解析此数组,错误消息应作为 'Please enter valid .edu id' 抛出,并且来自不应检查数组。

我应该如何以高效可靠的方式实现这一点?

以下是我的数组代码,其中包含电子邮件 ID。该数组可以为空,包含单个元素或多个元素。它应该适用于所有这些具有适当验证和错误消息的场景。

$aVals = $request_data;
$aVals['invite_emails'] = implode(', ', $aVals['invite_emails']);

$aVals['invite_emails'] 包含请求中收到的电子邮件 ID 列表。

如果您不清楚我的要求,如果您需要任何进一步的信息,请告诉我。

提前致谢。

你可以这样做,

更新:

// consider $aVals['invite_emails'] being your array of email ids
// $aVals['invite_emails'] = array("rajdeep@mit.edu", "subhadeep@gmail.com");

if(!empty($aVals['invite_emails'])){  //checks if the array is empty
    foreach($aVals['invite_emails'] as $email){  // loop through each email
        $domains = explode(".",explode("@",$email)[1]); // extract the top level domains from the email address
        if(!in_array("edu", $domains)){  // check if edu domain exists or not
            echo "Please enter valid .edu id";
            break;  // further emails from the array will not be checked
        }
    }
}

由于邮箱id总是由3个字符组成,你也可以这样做:

foreach($aVals['invite_emails'] as $email){
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // valid email
           if(substr($email, -3) != "edu") {
                echo "Please enter valid .edu id";
            }
    }
}