网络营销电子商务研究中心

网络营销电子商务研究中心 (https://www.0058.net/index.php)
-   代码交流 (https://www.0058.net/forumdisplay.php?f=16)
-   -   php 电子邮件账户 验证 (https://www.0058.net/showthread.php?t=2983)

car 2008-01-24 10:26 PM

php 电子邮件账户 验证
 
电子邮件账户遵循特定的格式,它必须由字符、数字或破折号开始,之后可以有任意数量的上述字符及句点,接着是“@”和域名。域名包含任意数量的“单词”及分隔它们的句点,而这些“单词”是由字符、数字和破折号组成的。最后一个后缀必须是2~6个字符长。(有些程序员只允许2或3个字符,这是不对的,因为没有考虑到最新的顶级域名,如.museum。)程序清单11.7.1所用的检验方法会允许足够短但不是真正有效的顶级域名,比如.books,但与搜索冗长的有效域名列表相比,这种方法简单多了。

程序清单11.7.1 电子邮件地址检验

<?php

// A function to check validity of email accounts:

function validate_email($address) {

// Check against a massive regex for validity ...

return preg_match(

'/^[a-z0-9_-][a-z0-9._-]+*([a-z0-9][a-z0-9-]*\.)+[a-z]{2,6}$/i',

$address);

}

// Run against various email accounts

$email = array('author*eliw.com', 'bob_123.3*a.b.c.r5-5.museum',

'mrmrmr*bob.lawnmower', '$bob$*gmail.com', 'bob*gmail');

// Loop over these values, determine if they are valid emails or now.

foreach ($email as $e) {

// Validate:

$output = validate_email($e);

// Prepare the display, either 'BAD' or 'GOOD'

$disp = ($output == false) ? 'BAD' : 'GOOD';

echo "<p>{$e} = {$disp}</p>\n";

}

?>

当然,这段代码只是检验输入的电子邮件地址是否属于有效范围,而且只允许使用最常见的形式。现实中存在着一些其他形式,需要对代码进行少许修改才能适应。特别是主机名应该可以用包围在方括号里的IP地址表示;用户名也应该可以用双引号包围的字符串表示,其中允许包含空格。但在当今的互联网上,这种情况是很少见的。


All times are GMT +8. The time now is 04:50 PM.

Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.