检查字符串是否是PHP中的电子邮件地址

hom*_*ork 54 php email-validation

我正在尝试进行SQL查询,但我需要以某种方式检查该值是否为电子邮件地址.我需要一种方法来检查是否$user是一个电子邮件地址,因为我在我的表中有这样的用户值.

test
test2
test@example.com
test2@example.com
test392
test@example.net
Run Code Online (Sandbox Code Playgroud)

等等...

我需要$useremail检查$user以确定它是否是电子邮件地址.所以我可以更新值WHERE user=test OR user=test@example.com,等等.

$user = strtolower($olduser);
$useremail = "";

mysql_query("UPDATE _$setprofile SET user=$sn, fc=$fc WHERE user='$user' OR user='$useremail");
Run Code Online (Sandbox Code Playgroud)

小智 206

没有正则表达式:

<?php
    if(filter_var("some@address.com", FILTER_VALIDATE_EMAIL)) {
        // valid address
    }
    else {
        // invalid address
    }
?>
Run Code Online (Sandbox Code Playgroud)

  • 顶尖提示!注意,这只是PHP v5.2.0或更高版本 (10认同)
  • 这允许`somename @ somedomain`,没有域名扩展名,例如.com.有没有办法来解决这个问题? (2认同)

Tra*_*vis 8

最简单的方法是使用正则表达式来检查电子邮件地址,尽管对于它的准确程度存在一些分歧.这个过程在这里详细讨论:

使用正则表达式验证电子邮件地址

您可以使用MySQL中的REGEXP根据您的正则表达式从数据库中进行选择:

http://dev.mysql.com/doc/refman/5.1/en/regexp.html


Jak*_*ake 6

这不是一个很好的方法,也不会检查电子邮件是否存在,但会检查它是否看起来像是带有@和域扩展名的电子邮件.

function checkEmail($email) {
   $find1 = strpos($email, '@');
   $find2 = strpos($email, '.');
   return ($find1 !== false && $find2 !== false && $find2 > $find1);
}

$email = 'name@email.com';
if ( checkEmail($email) ) {
   echo $email . ' looks like a valid email address.';
}
Run Code Online (Sandbox Code Playgroud)

  • `email @ com`是一个有效的电子邮件地址:http://en.wikipedia.org/wiki/Email_address#Valid_email_addresses (2认同)

Rub*_*ias 5

您可以使用正则表达式来验证输入字符串,以查看它是否与电子邮件地址匹配:

<?php 
$email = "someone@example.com"; 
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { 
  echo "Valid email address."; 
} 
else { 
  echo "Invalid email address."; 
} 
?>
Run Code Online (Sandbox Code Playgroud)

来自:http: //www.totallyphp.co.uk/code/validate_an_email_address_using_regular_expressions.htm

编辑:有关更准确的表达方式,请参阅Travis在此问题上的答案

  • `.info`和`.museum` tlds怎么样? (2认同)

Dom*_*ers 5

此函数is_email()将为您提供有关字符串是否为有效电子邮件地址的明确答案。据我所知,没有其他解决方案可以在相同级别的权限下执行此操作。

如果我正确理解该示例,则可以这样使用它

$user = strtolower($olduser);
$useremail = (is_email($user)) ? $user : '';
Run Code Online (Sandbox Code Playgroud)

PHP内置函数不完整。我是该书的主要作者,is_email()所以我在这里吹小号,但我为此做了很多工作,以便其他人不再需要。


小智 5

if(filter_var($email, FILTER_VALIDATE_EMAIL))
{
    echo 'This is a valid email address.';
    echo filter_var($email, FILTER_VALIDATE_EMAIL);
    //exit("E-mail is not valid");
}
else
{
    echo 'Invalid email address.';
} 
Run Code Online (Sandbox Code Playgroud)