欢迎访问宙启技术站
智能推送

使用PHP函数验证电子邮件地址是否格式正确

发布时间:2023-07-04 13:06:11

验证电子邮件地址格式正确性是一个常见的需求,可以使用PHP内置的函数和正则表达式来完成。下面是一种实现的示例代码:

<?php
function validateEmail($email) {
    // 使用PHP内置的函数过滤掉不符合RFC 822规范的电子邮件地址
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return false;
    }

    // 使用正则表达式进一步验证电子邮件地址格式
    // 正则表达式来自于Wikipedia的电子邮件地址验证示例,仅作简单验证
    $pattern = "/^[a-zA-Z0-9.!#$%&'*+=?^_{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/";
    if (!preg_match($pattern, $email)) {
        return false;
    }

    return true;
}

// 测试用例
$testEmails = [
    "test@example.com",
    "test@example",
    "test@example.",
    "test@.com",
    "test@example..com",
];

foreach ($testEmails as $email) {
    if (validateEmail($email)) {
        echo "$email is a valid email address." . PHP_EOL;
    } else {
        echo "$email is an invalid email address." . PHP_EOL;
    }
}
?>

以上代码中定义了一个validateEmail函数用于验证电子邮件地址。它首先使用filter_var`函数过滤掉不符合RFC 822规范的电子邮件地址。然后,使用正则表达式对电子邮件地址进行进一步验证。这个正则表达式来自于Wikipedia的电子邮件地址验证示例,仅作简单验证。

然后,我们可以使用一组测试用例来验证函数是否正确工作。在循环中,我们逐个检查测试用例中的电子邮件地址,如果被判定为有效,则输出提示信息。如果判定为无效,则输出相应的提示信息。

当我们运行以上代码时,输出结果将如下所示:

test@example.com is a valid email address.
test@example is an invalid email address.
test@example. is an invalid email address.
test@.com is an invalid email address.
test@example..com is an invalid email address.

通过这种方式,我们可以使用PHP函数和正则表达式来验证电子邮件地址的格式正确性。当然,这只是一个简单的示例,正则表达式还可以进一步优化,以检查更多电子邮件地址的情况。