PHP erigi: устарел (проверка по электронной почте) - PullRequest
0 голосов
/ 19 сентября 2010

Поскольку erigi() устарело в PHP 5, и мне нужно проверить идентификатор электронной почты, так какую функцию использовать ...?далее, пожалуйста, укажите формат для проверки электронной почты, такой как:

<?php
function checkEmail($email) 
{
   if(eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email)) 
   {
      return FALSE;
   }

   list($Username, $Domain) = split("@",$email);

   if(getmxrr($Domain, $MXHost)) 
   {
      return TRUE;
   }
   else 
   {
      if(fsockopen($Domain, 25, $errno, $errstr, 30)) 
      {
         return TRUE; 
      }
      else 
      {
         return FALSE; 
      }
   }
}
?>

Ответы [ 3 ]

2 голосов
/ 19 сентября 2010

Используйте вместо PHP filter_var функцию:

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {

}

Или, что еще лучше, используйте RFC-совместимый валидатор адреса электронной почты. Поскольку никакое количество регулярных выражений не будет охватывать все возможные действительные электронные письма.

2 голосов
/ 19 сентября 2010

Для php 5.2: http://php.net/manual/en/function.filter-var.php

$result = filter_var($email , FILTER_VALIDATE_EMAIL);

Или http://pl.php.net/manual/en/function.preg-match.php для любого регулярного выражения.

0 голосов
/ 19 сентября 2010

Например, с расширением фильтра.

<?php
function is_valid_email($email)
{
    return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}

var_dump(is_valid_email('test@example.com'));
var_dump(is_valid_email('foobar'));
var_dump(is_valid_email('test+foo@example.com.com'));

[~]> php x.php 
bool(true)
bool(false)
bool(true)

Это можно затем объединить с дальнейшей проверкой, которая у вас уже есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...