查看: 6031|回复: 0
打印 上一主题 下一主题

PHP规则表达式简化E-Mail认证

[复制链接]
跳转到指定楼层
1#
发表于 2007-10-4 11:25:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
Web站点有时经常确认用户E-Mail地址。如果站点用PHP开发,则验证用户E-Mail地址变得非常容易,这主要归咎于PHP附带的功能强大的正则表达式引擎(Regular expression engine)。本文将演示使用规则表达式引擎的方便之处。

假设有一个要求用户输入E-Mail地址的Web页。

<html>
<head></head>
<body>
<form action="validate.php" method="post">
Enter e-mail address: <input type="text" name="e-mail">
</body>
</html>

以上代码显示,提交请求被提交到validate.php。假设用户的E-Mail地址非常重要,那么就必须对其验证。

完成这一过程的最佳方法就是使用规则表达式,将核实E-Mail地址的格式,并确保符合user@domain.ext的标准格式。举例如下:

<?php
// check e-mail address
// display success or failure message
if (!preg_match("/^([a-zA-Z0-9])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]
+)+/", $_POST['e-mail'])) {
    die("Invalid e-mail address");
}
echo "Valid e-mail address, processing...";
?>

程序运行结果显示,将标记所有不符合user@domain.ext格式的邮件,而这一过程通过^([a-zA-Z0-9])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/正则表达式来完成。仔细分析如下:

符号 (^)表示字符串的起始。
表达式([a-zA-Z0-9])+显示邮件地址的用户名部分的可允许使用字符的范围。加号(+)添加到这一范围末尾,表示至少有一个字符为强制性。
@符号表示的意义正如符号本身,即@符号使用在E-Mail地址部分。
表达式([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+代表E-Mail地址的domain.ext扩展部分。请注意表达式前部分没有包含句号(.),然而后一部分则包含句号,这就保证地址的domain部分包含至少一个字符。同样,加号(+)分散在字符之中,这表示domain部分必需至少一个字符。
当然,以上表达式也并非完美,因为它无法确认无效的domain.ext。你可以通过使用用户名部分的句号以及限制domain部分的长度来紧凑化规则表达式。举例如下:

<?php
// check e-mail address
// display success or failure message
if (!preg_match("/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-
])+(.[a-zA-Z0-9_-]+)*.([a-zA-Z])$/", $_POST['e-mail'])) {
    die("Invalid e-mail address");
}
echo "Valid e-mail address, processing...";
?>

下面为比较感兴趣的代码增加部分:

现在,E-Mail地址的用户名部分包含两部分,其中一部分包含字母、数字以及破折号字符,并且支持句号。这就允许检验first.last@domain.ext 格式的用户名。
E-Mail地址的扩展部分,即([a-zA-Z],现在具有一个包含在大括号内的大小指定器,这就强制扩展部分的长度限定在2到6个字符之间。当前所有合法的扩展部分都处于这一范围之内。
美元标号($)表示为字符分隔符的末尾。
以上只列举了两个范例程序。当然,还有很多其它不同的方法,每种方法都有各自的利弊。请记住,由于效率等诸多原因的限制,没有十全十美的方法。所以,应该根据自己的需要,选择一种准确性和高性能相结合的方法。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表