在PHP表单验证中,我们常常需要对电子邮件、URL、IP等输入进行验证,我们既可以使用PHP内置函数又可以使用正则表达式进行文本验证。
方法1:使用filter_var 函数结合 FILTER_VALIDATE_EMAIL 过滤器实现验证:
<?php
// 1. 验证邮箱
$email = "test@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "邮箱有效";
}
echo '<br><br>';
// 2. 验证URL
$url = "https://www.example.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "URL有效";
}
echo '<br><br>';
// 3. 验证IP地址
$ip = "192.168.1.1";
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "IP地址有效";
}
echo '<br><br>';
// 4. 验证整数
$number = "123";
if (filter_var($number, FILTER_VALIDATE_INT)) {
echo "整数有效";
}
echo '<br><br>';
// 5. 验证浮点数
$float = "3.14";
if (filter_var($float, FILTER_VALIDATE_FLOAT)) {
echo "浮点数有效";
}
echo '<br><br>';
// 6. 验证布尔值
$bool = "true";
if (filter_var($bool, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) !== null) {
echo "布尔值有效";
}
echo '<br><br>';
// 7. 验证域名
$domain = "example.com";
if (filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) {
echo "域名有效";
}
echo '<br><br>';
// 8. 验证MAC地址
$mac = "00:1B:44:11:3A:B7";
if (filter_var($mac, FILTER_VALIDATE_MAC)) {
echo "MAC地址有效";
}
?>方法2:使用PHP正则表达式验证:
<?php
// 1. 验证邮箱
$email = "test@example.com";
if (preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $email)) {
echo "邮箱有效";
}
echo '<br><br>';
// 2. 验证URL
$url = "https://www.example.com";
if (preg_match('/^(https?|ftp):\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/\S*)?$/', $url)) {
echo "URL有效";
}
echo '<br><br>';
// 3. 验证IP地址
$ip = "192.168.1.1";
if (preg_match('/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/', $ip)) {
echo "IP地址有效";
}
echo '<br><br>';
// 4. 验证整数
$number = "123";
if (preg_match('/^-?\d+$/', $number)) {
echo "整数有效";
}
echo '<br><br>';
// 5. 验证浮点数
$float = "3.14";
if (preg_match('/^-?\d+\.\d+$/', $float)) {
echo "浮点数有效";
}
echo '<br><br>';
// 6. 验证布尔值
$bool = "true";
if (preg_match('/^(true|false|1|0|on|off|yes|no)$/i', $bool)) {
echo "布尔值有效";
}
echo '<br><br>';
// 7. 验证域名
$domain = "example.com";
if (preg_match('/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z]{2,})+$/', $domain)) {
echo "域名有效";
}
echo '<br><br>';
// 8. 验证MAC地址
$mac = "00:1B:44:11:3A:B7";
if (preg_match('/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/', $mac)) {
echo "MAC地址有效";
}
?>总结:对于一些固定模式的表单验证,我们直接使用PHP中的filter_var 函数结合 FILTER_VALIDATE_EMAIL 过滤器就直接解决了;如果需要自定义验证,我们可以使用正则表达式进行更灵活地检查。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程