【问题标题】:Having a problem validating email address in PHP with preg_match在 PHP 中使用 preg_match 验证电子邮件地址时出现问题
【发布时间】:2011-07-28 17:45:29
【问题描述】:

代码如下:

if(trim($_POST['email']) == '')  {
        $hasError = true;
    } else if (!preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
        $hasError = true;
    } else {
        $email = trim($_POST['email']);
    }

这是错误消息:

警告:preg_match() [function.preg-match]:在第 22 行的 /home/bigsilkd/public_html/UBA/join.php 中找不到结束分隔符 '/'

【问题讨论】:

  • 问题是您没有使用正确的正则表达式来验证电子邮件地址。正确的可以在这里找到:ex-parrot.com/pdw/Mail-RFC822-Address.html
  • filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); 太复杂了?

标签: php email preg-match validation


【解决方案1】:

这正是它所说的:

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$"

应该是

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/"
                                                      ^
                                                      |
                                  This was missing ---/

【讨论】:

    【解决方案2】:

    您不应该使用正则表达式来验证电子邮件。例如,您的正则表达式不允许我的电子邮件地址+@example.org,这是一个正常且有效的电子邮件。保存我的电子邮件!由于糟糕的表单验证,它正在消亡!使用filter_var

    if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        // email is valid
    }
    

    【讨论】:

      猜你喜欢
      • 2011-04-19
      • 2011-06-03
      • 2011-01-26
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      相关资源
      最近更新 更多