首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用php一次验证文本框或文本区域中的多个电子邮件地址

如何使用php一次验证文本框或文本区域中的多个电子邮件地址
EN

Stack Overflow用户
提问于 2011-12-23 15:37:06
回答 2查看 3.4K关注 0票数 0

我使用这个正则表达式来验证一封电子邮件。

代码语言:javascript
运行
复制
/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/

如何使用PHP验证文本框或文本区域中的多个电子邮件地址,同时使用逗号(,)和分号(;)分隔。

示例: abac@gmail.com、abcd@gmail.com;abcede@gmail.com、acf@in.com

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-23 15:55:08

代码语言:javascript
运行
复制
$emails = preg_split('[,|;]',$_POST['emails']);
foreach($emails as $e){
    if(preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/',trim($e)) == 0){
        echo($e ."is not a valid email address");
    }
}

应该把你收到的邮件分解成一系列的邮件。然后将检查每封电子邮件并检查正则表达式。将输出电子邮件无效,因为它找到它们。如果电子邮件无效,您可以随意使用代码执行的任何操作来替换回声。编辑:同时中断逗号和分号

编辑:正则表达式已更改。(很抱歉,我在发帖前没有检查过。)

票数 4
EN

Stack Overflow用户

发布于 2011-12-23 15:57:06

好的,下面是如何将您的正则表达式转换为匹配列表的方法:validate comma separated list using regex

简单的方法是拆分字符串,然后验证每个条目(这两种方法都不准确,因为地址中实际上允许使用逗号):

代码语言:javascript
运行
复制
 $list = str_getcsv($emails);   // or preg_split on commas
 foreach ($list as $mail) {
     if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
         return false;
     }
 }

或者,您可以使用Using a regular expression to validate an email address并将最后一行(?&address)/x交换为:

代码语言:javascript
运行
复制
 ^\s* (?&address) (\s*,\s* (?&address) )* \s* $ /x
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8613418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档