当你在某个论坛上注册时,通常都有一个 e-mail 地址验证的功能,当你输入非法的一个格式时会出现某种错误提示信息的,我们可以使用下面的规则表达式:
ereg("^[a-zA-Z0-9_] @[a-zA-Z0-9-] .[a-zA-Z0-9-.] $]", $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;
- }
- }
现在我们再把上面的两个功能用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;
- }
- }
- }
之后我们就可以利用这个函数来检测是否存在输入的一个Email了,举个例子:
- if(checkEmail(web@etoow.com) == FALSE)
- {
- echo "您输入的E_mail是不正确的.";
- }
- else
- {
- echo "输入的E_mail是正确的.";
- }
新闻热点
疑难解答