通过PHP正则验证form表单提交的数据
1、示例:先写一个简单的表单。
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<h1>注册页面</h1>
<form action="doAction.php" method="post">
<table border='1' cellpadding='0' cellspacing='0' bgcolor='#ABCDEF' width='80%'>
<tr>
<td>用户名</td>
<td><input type="text" name="username" id="" placeholder='请输入合法用户名' />用户名由数字、字母、下划线组成</td> //用户名的规则
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password" id="" placeholder='请输入密码' />由数字、字母组成</td> //密码的规则
</tr>
<tr>
<td>邮箱</td>
<td><input type="email" name="email" id="" placeholder='请输入合法邮箱' />合法邮箱</td>
</tr>
<tr>
<td>年龄</td>
<td>
<input type="number" name="age" id="" placeholder='请输入合法年龄' />年龄必须为正整数 //年龄的规则
</td>
</tr>
<tr>
<td>个人博客</td>
<td><input type="url" name="url" id="" placeholder='请输入合法URL地址' />类似http://geblog.com</td> //验证个人博客的url
</tr>
<tr>
<td colspan='2'><input type="submit" value="注册" /></td>
</tr>
</table>
</form>
</body>
</html>
2、写一个接收页面进行一个处理,校验用户名。
<?php
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$age=$_POST['age'];
$url=$_POST['url'];
//验证用户名,首字母只能是字母
if(!preg_match('#^[a-zA-Z]\w+$#',$username)){
die('用户名不符合规范');
}
echo '注册成功';
3、结果,输入字母开头的。

4、输入数字开头的。

5、输入中文。

6、校验密码
<?php
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$age=$_POST['age'];
$url=$_POST['url'];
//校验密码,密码长度为8~16
if(!preg_match('#^\w{8,16}$#',$password)){
die('密码不符合规范');
}
echo '注册成功';
7、结果,写了一个长度不符合的。

8、写一个符合的。

9、如果我写一个特殊字符。

10、校验邮箱。
<?php
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$age=$_POST['age'];
$url=$_POST['url'];
//验证邮箱
if(!preg_match('#^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$#i',$email)){
die('邮箱不符合规范');
}
echo '注册成功';
11、结果,写一个不合法的email。

12、写一个合法的email。

13、校验年龄
<?php
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$age=$_POST['age'];
$url=$_POST['url'];
///验证年龄
if(!preg_match('#^[1-9]\d*$#',$age)){
die('年龄不符合规范');
}
echo '注册成功';
校验URL
<?php
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$age=$_POST['age'];
$url=$_POST['url'];
//验证URL
if(!preg_match('#^[a-zA-z]+://(\w+(-\w+)*)(\.(?:\w+(-\w+)*))*(\?\S*)?$#i',$url)){
die('URL不符合规范');
}
echo '注册成功';
14、注册成功,我们分别对URL、年龄、邮箱、用户名、密码,进行了校验,可以校验我们用户填写的数据是否符合我们的规范。当然,在我们其他方式通过不了的时候,我们再使用正则表达式,能用其他方式尽量使用其他方式处理。像校验这样的数据,我们可以用php提供的filter函数库,就可以使用这些常用的校验。
结果:
