用PHP来验证Email是否正确

当你在某个论坛上注册时,通常都有一个 e-mail 地址验证的功能,当你输入非法的一个格式时会出现某种错误提示信息的,我们可以使用下面的规则表达式:

ereg("^[a-zA-Z0-9_] @[a-zA-Z0-9-] .[a-zA-Z0-9-.] $]", $email);

但是上面这个式子的功能是只能检查字符串,不能进行输出。我们可以进一步利用这个式子来达到返回信息的功能:

  1. if (eregi("^[a-zA-Z0-9_] @[a-zA-Z0-9-] .[a-zA-Z0-9-.] $]", $email))
  2. {
  3. return FALSE;
  4. }

下面我们可以进一步来检测主机名,是不是存在:

  1. list($Username, $Domain) = split("@",$email);
  2. if(getmxrr($Domain, $MXHost))
  3. {
  4. return TRUE;
  5. }
  6. else
  7. {
  8. if(fsockopen($Domain, 25, $errno, $errstr, 30))
  9. {
  10. return TRUE;
  11. }
  12. else
  13. {
  14. return FALSE;
  15. }
  16. }

现在我们再把上面的两个功能用PHP组织起来构成一个函数:

  1. function checkEmail($email)
  2. { if(eregi("^[a-zA-Z0-9_] @[a-zA-Z0-9-] .[a-zA-Z0-9-.] $]", $email))
  3. {
  4. return FALSE;
  5. }
  6. list($Username, $Domain) = split("@",$email);
  7. if(getmxrr($Domain, $MXHost))
  8. {
  9. return TRUE;
  10. }
  11. else
  12. {
  13. if(fsockopen($Domain, 25, $errno, $errstr, 30))
  14. {
  15. return TRUE;
  16. }
  17. else
  18. {
  19. return FALSE;
  20. }
  21. }
  22. }

之后我们就可以利用这个函数来检测是否存在输入的一个Email了,举个例子:

  1. if(checkEmail(web@etoow.com) == FALSE)
  2. {
  3. echo "您输入的E_mail是不正确的.";
  4. }
  5. else
  6. {
  7. echo "输入的E_mail是正确的.";
  8. }