PHP电子邮件地址验证问题
我想知道在输入框中输入电子邮件地址时,如何检查是否包含PHP电子邮件地址验证问题,php,email-address,Php,Email Address,我想知道在输入框中输入电子邮件地址时,如何检查是否包含@符号?我正在使用PHP 这是我的php代码 if (isset($_POST['email']) && strlen($_POST['email']) <= 255) if(isset($\u POST['email'])和&strlen($\u POST['email'])) 一个更好的方法是使用这个正则表达式来判断电子邮件是否正常 \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
@
符号?我正在使用PHP
这是我的php代码
if (isset($_POST['email']) && strlen($_POST['email']) <= 255)
if(isset($\u POST['email'])和&strlen($\u POST['email']))
一个更好的方法是使用这个正则表达式来判断电子邮件是否正常
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
在preg_match()中
一个更好的方法是使用这个正则表达式来判断电子邮件是否正常
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
在preg_match()中,您可能希望使用preg而不是松散的strpos($\u POST['email'],“@”)检查此项。
:
您可能希望使用preg而不是松散的strpos($\u POST['email'],“@”)检查此问题。
:
仅引用上的文档中的一句话。“如果您只想确定某个特定的指针是否出现在haystack中,请改用更快、内存占用更少的函数strpos()
关于strpos,我注意到的另一件事是,仅仅检查strpos的真实性是不安全的,因为如果$Pineder位于$haystack中的第0位,简单的检查就会失败。您还必须检查它的类型(至少我是这样做的)。这将打印“notfound found”
仅引用上的文档。“如果您只想确定haystack中是否出现了特定的指针,请改用更快、内存占用更少的函数strpos()
关于strpos,我注意到的另一件事是,仅仅检查strpos的真实性是不安全的,因为如果$Pineder位于$haystack中的第0位,简单的检查就会失败。您还必须检查它的类型(至少我是这样做的)。这将打印“notfound found”
可以使用一个简单的:
filter_var($email, FILTER_VALIDATE_EMAIL)
如果您绝对必须使用正则表达式,则我建议您不要使用正则表达式(这表示不应使用正则表达式验证电子邮件地址):
可以使用一个简单的:
filter_var($email, FILTER_VALIDATE_EMAIL)
如果您绝对必须使用正则表达式,则我建议您不要使用正则表达式(这表示不应使用正则表达式验证电子邮件地址):
以下是使用PHP进行电子邮件验证检查的方法:
function check_email($email) {
// Remove trailing and leading spaces.
$email = trim($email);
// Must have an @ sign.
$at = strpos($email, '@');
if( $at === false )
return 1; //false;
list($mailbox, $hostname) = explode('@', $email);
// Check that there is a mailbox and a hostname
if( $mailbox == '' || $hostname == '' )
return 2; //false;
// Only one @ allowed
if( strpos($hostname, '@') !== false )
return 3; //false;
// Must be a . in the hostname
if( strpos($hostname, '.') === false )
return 4; //false;
// Can't have a double in either mailbox or hostname
if( strpos($hostname, '..') !== false || strpos($mailbox, '..') !== false )
return 5; //false;
// Mailbox can't start or end with a .
if( substr($mailbox, 0, 1) == '.' || substr($mailbox, strlen($mailbox)-1, 1) == '.' )
return 6; //false;
// Hostname can't start or end with a .
if( substr($hostname, 0, 1) == '.' || substr($hostname, strlen($hostname)-1, 1) == '.' )
return 7; //false;
// Check that all characters are valid
if( str_replace(' ' , '', strtr(strtolower($mailbox), 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&\'*+-/=?^_`{|}~.', ' ')) != '' )
return 8; // false;
if( str_replace(' ' , '', strtr(strtolower($hostname), 'abcdefghijklmnopqrstuvwxyz0123456789_-.', ' ')) != '' )
return 9; //false;
return 0; //true;
}
以下是使用PHP进行电子邮件验证检查的方法:
function check_email($email) {
// Remove trailing and leading spaces.
$email = trim($email);
// Must have an @ sign.
$at = strpos($email, '@');
if( $at === false )
return 1; //false;
list($mailbox, $hostname) = explode('@', $email);
// Check that there is a mailbox and a hostname
if( $mailbox == '' || $hostname == '' )
return 2; //false;
// Only one @ allowed
if( strpos($hostname, '@') !== false )
return 3; //false;
// Must be a . in the hostname
if( strpos($hostname, '.') === false )
return 4; //false;
// Can't have a double in either mailbox or hostname
if( strpos($hostname, '..') !== false || strpos($mailbox, '..') !== false )
return 5; //false;
// Mailbox can't start or end with a .
if( substr($mailbox, 0, 1) == '.' || substr($mailbox, strlen($mailbox)-1, 1) == '.' )
return 6; //false;
// Hostname can't start or end with a .
if( substr($hostname, 0, 1) == '.' || substr($hostname, strlen($hostname)-1, 1) == '.' )
return 7; //false;
// Check that all characters are valid
if( str_replace(' ' , '', strtr(strtolower($mailbox), 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&\'*+-/=?^_`{|}~.', ' ')) != '' )
return 8; // false;
if( str_replace(' ' , '', strtr(strtolower($hostname), 'abcdefghijklmnopqrstuvwxyz0123456789_-.', ' ')) != '' )
return 9; //false;
return 0; //true;
}
这是我用的,非常好用
public function valid_mail($mail)
{
if (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $mail))
{
return false;
} else {
return true;
}
}
这是我用的,非常好用
public function valid_mail($mail)
{
if (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $mail))
{
return false;
} else {
return true;
}
}
此正则表达式实现:
[a-z0-9!#$%&'*+/=?^{code>{124;}-]+(?:\.[a-z0-9!#$%&'*+/=?^{code>{124;}-]+*@(?:a-z0-9?)+a-z0-9
然而,在实践中,我发现这更适合通过网页捕获电子邮件地址(或者更具体地说是ADDR-SPEC):
^[a-z0-9.\%+!$&*=^ | ~\%\'`{}/-]+@[a-z0-9.-]+.[a-z]{2,6}$
此正则表达式实现:
[a-z0-9!#$%&'*+/=?^{code>{124;}-]+(?:\.[a-z0-9!#$%&'*+/=?^{code>{124;}-]+*@(?:a-z0-9?)+a-z0-9
然而,在实践中,我发现这更适合通过网页捕获电子邮件地址(或者更具体地说是ADDR-SPEC):
^[a-z0-9.\%+!$&*=^ | ~\%\'`{}/-]+@[a-z0-9.-]+.[a-z]{2,6}$
欢迎您使用我的免费PHP函数is_email()
来验证地址。可以下载。它不使用正则表达式,因为我找不到完全实现RFC 5321的函数
is_email()
将确保地址完全符合RFC 5321。它还可以选择检查域是否实际存在,是否有MX记录
你不应该依赖验证器来告诉你用户的电子邮件地址是否确实存在:一些ISP向其用户提供不符合要求的地址,特别是在不使用拉丁字母的国家。更多关于电子邮件验证的文章如下:。欢迎你使用我的免费PHP函数is_email()
验证地址。可以下载。它不使用正则表达式,因为我找不到完全实现RFC 5321的正则表达式
is_email()
将确保地址完全符合RFC 5321。它还可以选择检查域是否实际存在,是否有MX记录
你不应该依赖验证器来告诉你用户的电子邮件地址是否确实存在:一些ISP向他们的用户提供不符合要求的地址,特别是在不使用拉丁字母的国家。更多关于电子邮件验证的文章如下:。我只想检查@是否存在。这是一个可怕的正则表达式-它拒绝它们.museum
TLD上的AIL和那些带有+
的。它也不匹配带有小写字母的电子邮件。类似这样的东西:TEST@..........AA
是有效的。我只想检查@是否存在。这是一个可怕的正则表达式-它拒绝.museum
TLD上的电子邮件以及那些在它也不匹配小写字母的电子邮件。类似这样:TEST@..........AA
有效。仅检查@符号是否存在不是验证电子邮件地址的正确方法:)看看正则表达式是如何工作的:)@Ranhiru Cooray正则表达式不适用于所有电子邮件:)虽然很难创建一个正则表达式来管理所有邮件,但我认为创建一个健壮的正则表达式是完全可能的。不管怎么说,伊姆浩,这比仅仅检查符号@是否存在要好无数倍:)@Ranhiru-Cooray到每个人那里自己的我认为我的方式是可以的:)仅仅检查@符号是否存在不是验证电子邮件地址的正确方式:)看看@正则表达式如何工作:)@Ranhiru-Cooray正则表达式不工作对于所有电子邮件:)虽然很难创建一个正则表达式来管理它们,但我认为创建一个坚固的东西是完全可能的。不管怎么说,IMHO,这比仅仅检查符号@是否存在要好无数倍:)@Ranhiru Cooray到eachs那里有自己的我认为我的方式是可以的:)即使在解读你的帖子之后,这个模式也有一大堆错误的东西。即使在解读你的帖子之后,这个模式也有一大堆错误的东西。