当前位置: 首页 > news >正文

PHP 多种内置的验证规则和函数

PHP 提供了多种内置的验证规则和函数,用于处理用户输入的数据验证。以下是 PHP 内置的常见验证规则和函数的总结:


1. filter_var() 函数

filter_var() 是 PHP 中最常用的内置验证函数之一,配合预定义的过滤器(FILTER_* 常量)进行数据验证。
常用过滤器:

  • FILTER_VALIDATE_EMAIL
    验证电子邮件地址格式是否有效。

    $email = "test@example.com";
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {echo "有效邮件地址";
    } else {echo "无效邮件地址";
    }
    
  • FILTER_VALIDATE_URL
    验证 URL 格式是否正确(可选参数 FILTER_FLAG_HOST_REQUIRED 等)。

    $url = "https://www.example.com";
    if (filter_var($url, FILTER_VALIDATE_URL)) {echo "有效 URL";
    } else {echo "无效 URL";
    }
    
  • FILTER_VALIDATE_INT
    验证整数并可设置范围限制。

    $age = "25";
    if (filter_var($age, FILTER_VALIDATE_INT, ["options" => ["min_range" => 18, "max_range" => 65]])) {echo "年龄有效";
    } else {echo "年龄无效";
    }
    
  • FILTER_VALIDATE_FLOAT
    验证浮点数。

    $price = "19.99";
    if (filter_var($price, FILTER_VALIDATE_FLOAT)) {echo "价格有效";
    } else {echo "价格无效";
    }
    
  • FILTER_VALIDATE_BOOLEAN
    验证布尔值(返回 true/false 或字符串 “1”/“0”)。

    $value = "1";
    if (filter_var($value, FILTER_VALIDATE_BOOLEAN)) {echo "布尔值为 true";
    } else {echo "布尔值为 false";
    }
    
  • FILTER_VALIDATE_REGEXP
    使用自定义正则表达式验证。

    $phone = "13812345678";
    if (filter_var($phone, FILTER_VALIDATE_REGEXP, ["options" => ["regexp" => "/^1[3456789]\d{9}$/"]])) {echo "手机号有效";
    } else {echo "手机号无效";
    }
    

2. filter_var_array() 函数

用于一次性验证多个字段的数据,返回验证后的数组结果。

$data = ["email" => "test@example.com","age" => "25","url" => "https://www.example.com"
];$rules = ["email" => FILTER_VALIDATE_EMAIL,"age" => ["filter" => FILTER_VALIDATE_INT, "options" => ["min_range" => 18]],"url" => FILTER_VALIDATE_URL
];$result = filter_var_array($data, $rules);
print_r($result); // 输出验证后的值或 false

3. 类型检查函数

PHP 提供了一些内置函数用于检查数据类型:

  • is_string():验证是否为字符串。
  • is_int() / is_integer():验证是否为整数。
  • is_float() / is_double():验证是否为浮点数。
  • is_bool():验证是否为布尔值。
  • is_numeric():验证是否为数字或数字字符串。
  • is_array():验证是否为数组。
  • is_null():验证是否为 null

示例:

$value = "123";
if (is_numeric($value)) {echo "值是数字";
} else {echo "值不是数字";
}

4. 正则表达式验证

PHP 的 preg_match() 函数可用于自定义正则表达式验证。
示例:

$password = "SecurePass123!";
if (preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$/", $password)) {echo "密码符合要求";
} else {echo "密码不符合要求";
}

5. 空值检查

  • empty():检查变量是否为空(null、空字符串、空数组等)。
  • isset():检查变量是否已设置且非 null

示例:

$username = "";
if (empty($username)) {echo "用户名为空";
} else {echo "用户名有效";
}

6. 其他验证方法

  • strlen():验证字符串长度。

    $password = "123456";
    if (strlen($password) >= 8) {echo "密码长度有效";
    } else {echo "密码太短";
    }
    
  • checkdate():验证日期是否有效。

    $month = 13;
    $day = 32;
    $year = 2025;
    if (checkdate($month, $day, $year)) {echo "日期有效";
    } else {echo "日期无效";
    }
    

7. Laravel 等框架的验证规则(基于 PHP 扩展)

虽然不属于 PHP 核心,但 Laravel 等框架扩展了 PHP 的验证功能,提供了更丰富的规则(如 requireduniqueexists 等)。
示例(Laravel):

$rules = ['name' => 'required|string|max:255','email' => 'required|email|unique:users',
];

总结

验证类型方法/函数描述
邮箱FILTER_VALIDATE_EMAIL验证电子邮件地址
URLFILTER_VALIDATE_URL验证 URL 格式
整数FILTER_VALIDATE_INT验证整数及范围
浮点数FILTER_VALIDATE_FLOAT验证浮点数
布尔值FILTER_VALIDATE_BOOLEAN验证布尔值
正则表达式FILTER_VALIDATE_REGEXP自定义正则验证
多字段验证filter_var_array()批量验证多个字段
类型检查is_*() 函数验证数据类型
空值检查empty()isset()检查变量是否存在或为空
字符串长度strlen()验证字符串长度
日期验证checkdate()验证日期是否有效

注意事项

  1. 安全性:验证后仍需对数据进行过滤(如 htmlspecialchars())以防止 XSS 或 SQL 注入。
  2. 灵活性:复杂验证可通过结合 filter_var()preg_match() 实现。
  3. 框架扩展:Laravel 等框架的验证规则更简洁,适合大型项目。

如果需要更复杂的验证逻辑,可以结合使用内置函数和第三方库(如 Respect\Validation)。

相关文章:

  • 网络验证Api用户系统(本系统基于php+mysql开发) 软件验证卡密系统 源码测试搭建成功
  • MFC 第一章概述
  • RabbitMQ的使用--Spring AMQP(更新中)
  • ubuntu24安装TensorRT
  • Vue.js 中的 v-bind 指令详解
  • 熵最小化Entropy Minimization (二): 案例实施
  • 《高等数学》(同济大学·第7版)第三章第六节函数图形的描绘
  • 设计模式-备忘录模式
  • 代码随想录刷题day31
  • 专题一_双指针_快乐数
  • 解锁数据库简洁之道:FastAPI与SQLModel实战指南
  • 每日算法 -【Swift 算法】删除链表的倒数第 N 个结点
  • 南昌市新建区委书记陈奕蒙会见深兰科技集团董事长陈海波一行
  • 金融机构的网络安全
  • Day18
  • MySql简述
  • 【Linux Learning】SSH连线出现警告:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  • 判断素数两种方法【自用】
  • Linux之nginx部署网站
  • JavaScript 函数详解:从基础概念到实战应用
  • wordpress自动发布图片/天津seo推广
  • 读书网站怎么做/百度识图找原图
  • 外贸网站建设公司流程图/网络公司排行榜
  • 买公司的网站建设/网络营销整合营销
  • 深圳网站制作公司怎么样/上海优化排名网站
  • 制作网站民治/口碑营销的好处