0

erigi()PHP 5で非推奨になり、電子メールIDを検証する必要があるため、どの関数を使用する必要がありますか?次のような電子メール検証の形式が必要です。

<?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; 
      }
   }
}
?>
4

3 に答える 3

2

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 。

于 2010-09-19T10:53:09.303 に答える
2

filter_var代わりにPHP関数を使用してください。

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {

}

または、さらに良いことに、RFC準拠の電子メールアドレスバリデーターを使用します。正規表現の量には、可能なすべての有効な電子メールが含まれることはありません。

于 2010-09-19T10:53:20.333 に答える
0

フィルタ拡張を使用した例。

<?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)

これを、すでに持っているさらなる検証と組み合わせることができます。

于 2010-09-19T10:57:31.800 に答える