PHP高手进来看下,帮忙写个判断邮箱的程序吧
发布网友
发布时间:2022-04-07 08:28
我来回答
共2个回答
热心网友
时间:2022-04-07 09:57
你的代码的确是有点长,我眼睛都快看花了。在此只在你的代码中只取了一部分,并且原封未动。几乎花了我两个小时去搞代码测试、写帖子。鉴于你是初学者,我就慢慢的讲,注意听了。
判断一个邮件,无非判断两件事,一是判断用户有没有输入邮件地址,而是在用户输入了邮件地址的情况下判断输入的地址是否符合“username@domain(用户名@域名)”的格式。
在这里,我用JavaScript就实现这个判断,不适用PHP传来传去。
要使用JavaScript进行判断,就不得不提到正则表达式了,正则表达式专门是用来进行判断的。那么就了解一下正则表达式。
正则表达式的类型有好几种,实现的方法也有两三种,我就讲最基本的一个类:字符类。
字符 匹配
_________________________________________________________________
[...] 位于括号之内的任意字符
[^...] 不在括号之中的任意字符
. 除了换行符之外的任意字符,等价于[^\n]
\w 任何单字字符, 等价于[a-zA-Z0-9]
\W 任何非单字字符,等价于[^a-zA-Z0-9]
\s 任何空白符,等价于[\t \n \r \f \v]
\S 任何非空白符,等价于[^\t \n \r \f \v]
\d 任何数字,等价于[0-9]
\D 除了数字之外的任何字符,等价于[^0-9]
[\b] 一个退格直接量(特例)
________________________________________________________________
以上就是正则表达式中字符类的精髓,一会我们就要用到。
再来分析一下邮件地址的组成:
^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$
稍作解释:
^:匹配开始
([a-z0-9A-Z]+[-|\.]?)+:数字或字母>1位 + “-”或“.”,以上组合重复1次以上
[a-z0-9A-Z]:用户名以数字或字母结尾
@:匹配<@>
(
[a-z0-9A-Z]+:匹配多位数字或字母
(-[a-z0-9A-Z]+)?:匹配 -加多位数字或字母 0次或1次
\.:匹配<.>
)+:匹配括号中内容多次
[a-zA-Z]{2,}:匹配字母2次以上
$:匹配结尾
或使用下面表达式也可达到判断的目的:
/[a-zA-Z_0-9]{1,}[@][a-zA-Z_0-9.]{1,}(([.][Cc]{1}[Oo]{1}[Mm]{1})|([.][Nn]{1}[Ee]{1}[Tt]{1})|([.][Oo]{1}[Rr]{1}[Gg]{1})|([.][Mm]{1}[Oo]{1}[Bb]{1}[Ii]{1})|([.][MM]{1}[Ee]{1})|([.][Cc]{1}[Cc]{1})|([.][Bb]{1}[Ii]{1}[Zz]{1})|([.][Tt]{1}[Vv]{1})|([.][Hh]{1}[Kk]{1})|([.][Ii]{1}[Nn]{1}[Ff]{1}[Oo]{1})){1,2}([.][Cc]{1}[Nn]{1}){0,1}$/
进本原理讲了,现在就来看具体的代码了。我都做了详细的注释,相信很容易看懂。
<SCRIPT language="JavaScript">
/* 定义获得表单对象的值的方法 */
function get_obj(obj)
{
return document.getElementById(obj);
}
function post()
{
/* 检查是否输入了邮件地址 */
if(document.getElementById("mail")!=null&&get_obj('mail').value=='')
{
alert("邮件地址不能为空!");
get_obj('mail').focus();
return false;
}
/* 定义正则表达式 */
/* 当用户输入的地址与表达式匹配时,返回true */
/* 否则返回false,同时弹出警告框,文本框获取焦点 */
var pattern = /^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$/;
if(!pattern.test(get_obj('mail').value))
{
alert("请填写正确的邮件格式!");
get_obj('mail').focus();
return false;
}
}
</SCRIPT>
/* 在表单(form)的属性中加入 onSubmit="return post()" */
/* post()即为构造的一个检查函数,单击提交按钮就会触发函数post() */
<form name="form1" method="post" action="post.php" onSubmit="return post()">
<table width="100%" border="1" align="center" bordercolor="#ECE9D8" bgcolor="#999999">
<tr align="center">
<td>邮箱:</td>
<td><input type="text" name="mail"></td>
</tr>
<tr align="center">
<td><input name="Submit" type="reset" onClick="MM_goToURL('parent','index.php');return document.MM_returnValue" value="返回"></td>
<input type="hidden" name="action" value="bookinfo">
<td><input type="submit" name="Submit2" value="提交"></td>
</tr>
</form>
以上代码已经经过我的测试,没有问题,绝对能实现对邮件地址的判断。
如果想了解更多,可以到我的网站上来交流。网址
http://www.sunchis.com/html/dev/php/
热心网友
时间:2022-04-07 11:15
不就是判断邮箱格式嘛,给你个函数,接受页面传过来的邮箱的字段
function isemail($email) {
return strlen($email) > 8 && preg_match("/^[-_+.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+([a-z]{2,4})|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i", $email);
}
使用方法
if(!isemail($_POST['email'])) {
echo "8嘎!邮箱格式不正确!!死啦死啦地!";
exit();
}