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_-]+)+/正则表达式来完成。仔细分析如下:
当然,以上表达式也并非完美,因为它无法确认无效的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...";
?>
下面为比较感兴趣的代码增加部分:
以上只列举了两个范例程序。当然,还有很多其它不同的方法,每种方法都有各自的利弊。请记住,由于效率等诸多原因的限制,没有十全十美的方法。所以,应该根据自己的需要,选择一种准确性和高性能相结合的方法。