0

0

php验证类

php中文网

php中文网

发布时间:2016-07-25 09:12:12

|

1327人浏览过

|

来源于php中文网

原创

一个可扩展的php验证类,
类里面可以的各类验证可自行调整实现,现在为基本实现方式。
需要添加规则的话, 直接定义方法,方法名即为规则名称。具体参考使用方法。
  1. require_once('./Validator.class.php');
  2. $data = array(
  3. 'nickname' => 'heno' ,
  4. 'realname' => 'steven',
  5. 'age' => 25,
  6. 'mobile' => '1521060426');
  7. $validator = new Validator($data);
  8. $validator->setRule('nickname', 'required');
  9. $validator->setRule('realname', array('length' => array(1,6), 'required'));
  10. $validator->setRule('age', array('required', 'digit'));
  11. $validator->setRule('mobile', array('mobile'));
  12. $result = $validator->validate();
  13. var_dump($result);
  14. var_dump($validator->getResultInfo());
复制代码
  1. /**
  2. * Validator 数据验证类
  3. * @package library
  4. * @category library
  5. * @author Steven
  6. * @version 1.0
  7. */
  8. /**
  9. * Validator 数据验证类
  10. * @package library
  11. * @category library
  12. * @author Steven
  13. * @version 1.0
  14. */
  15. class Validator {
  16. /**
  17. * 待校验数据
  18. * @var array
  19. */
  20. private $_data;
  21. /**
  22. * 校验规则
  23. * @var array
  24. */
  25. private $_ruleList = null;
  26. /**
  27. * 校验结果
  28. * @var bool
  29. */
  30. private $_result = null;
  31. /**
  32. * 校验数据信息
  33. * @var array
  34. */
  35. private $_resultInfo = array();
  36. /**
  37. * 构造函数
  38. * @param array $data 待校验数据
  39. */
  40. public function __construct($data = null)
  41. {
  42. if ($data) {
  43. $this->_data = $data;
  44. }
  45. }
  46. /**
  47. * 设置校验规则
  48. * @param string $var 带校验项key
  49. * @param mixed $rule 校验规则
  50. * @return void
  51. */
  52. public function setRule($var, $rule)
  53. {
  54. $this->_ruleList[$var] = $rule;
  55. }
  56. /**
  57. * 检验数据
  58. * @param array $data
  59. *
  60. * $data = array('nickname' => 'heno' , 'realname' => 'steven', 'age' => 25);
  61. * $validator = new Validator($data);
  62. * $validator->setRule('nickname', 'required');
  63. * $validator->setRule('realname', array('lenght' => array(1,4), 'required'));
  64. * $validator->setRule('age', array('required', 'digit'));
  65. * $result = $validator->validate();
  66. * var_dump($validator->getResultInfo());
  67. *
  68. * @return bool
  69. */
  70. public function validate($data = null)
  71. {
  72. $result = true;
  73. /* 如果没有设置校验规则直接返回 true */
  74. if ($this->_ruleList === null || !count($this->_ruleList)) {
  75. return $result;
  76. }
  77. /* 已经设置规则,则对规则逐条进行校验 */
  78. foreach ($this->_ruleList as $ruleKey => $ruleItem) {
  79. /* 如果检验规则为单条规则 */
  80. if (!is_array($ruleItem)) {
  81. $ruleItem = trim($ruleItem);
  82. if (method_exists($this, $ruleItem)) {
  83. /* 校验数据,保存校验结果 */
  84. $tmpResult = $this->$ruleItem($ruleKey);
  85. if (!$tmpResult) {
  86. $this->_resultInfo[$ruleKey][$ruleItem] = $tmpResult;
  87. $result = false;
  88. }
  89. }
  90. continue;
  91. }
  92. /* 校验规则为多条 */
  93. foreach ($ruleItem as $ruleItemKey => $rule) {
  94. if (!is_array($rule)) {
  95. $rule = trim($rule);
  96. if (method_exists($this, $rule)) {
  97. /* 校验数据,设置结果集 */
  98. $tmpResult = $this->$rule($ruleKey);
  99. if (!$tmpResult) {
  100. $this->_resultInfo[$ruleKey][$rule] = $tmpResult;
  101. $result = false;
  102. }
  103. }
  104. } else {
  105. if (method_exists($this, $ruleItemKey)) {
  106. /* 校验数据,设置结果集 */
  107. $tmpResult = $this->$ruleItemKey($ruleKey, $rule);
  108. if (!$tmpResult) {
  109. $this->_resultInfo[$ruleKey][$ruleItemKey] = $tmpResult;
  110. $result = false;
  111. }
  112. }
  113. }
  114. }
  115. }
  116. return $result;
  117. }
  118. /**
  119. * 获取校验结果数据
  120. * @return [type] [description]
  121. */
  122. public function getResultInfo()
  123. {
  124. return $this->_resultInfo;
  125. }
  126. /**
  127. * 校验必填参数
  128. * @param string $varName 校验项
  129. * @return bool
  130. */
  131. public function required($varName)
  132. {
  133. $result = false;
  134. if (is_array($this->_data) && isset($this->_data[$varName])) {
  135. $result = true;
  136. }
  137. return $result;
  138. }
  139. /**
  140. * 校验参数长度
  141. *
  142. * @param string $varName 校验项
  143. * @param array $lengthData array($minLen, $maxLen)
  144. * @return bool
  145. */
  146. public function length($varName, $lengthData)
  147. {
  148. $result = true;
  149. /* 如果该项没有设置,默认为校验通过 */
  150. if ($this->required($varName)) {
  151. $varLen = mb_strlen($this->_data[$varName]);
  152. $minLen = $lengthData[0];
  153. $maxLen = $lengthData[1];
  154. if ($varLen $maxLen) {
  155. $result = true;
  156. }
  157. }
  158. return $result;
  159. }
  160. /**
  161. * 校验邮件
  162. * @param string $varName 校验项
  163. * @return bool
  164. */
  165. public function email($varName)
  166. {
  167. $result = true;
  168. /* 如果该项没有设置,默认为校验通过 */
  169. if ($this->required($varName)) {
  170. $email = trim($this->_data[$varName]);
  171. if (preg_match('/^[-\w]+?@[-\w.]+?$/', $email)) {
  172. $result = false;
  173. }
  174. }
  175. return $result;
  176. }
  177. /**
  178. * 校验手机
  179. * @param string $varName 校验项
  180. * @return bool
  181. */
  182. public function mobile($varName)
  183. {
  184. $result = true;
  185. /* 如果该项没有设置,默认为校验通过 */
  186. if ($this->required($varName)) {
  187. $mobile = trim($this->_data[$varName]);
  188. if (!preg_match('/^1[3458]\d{10}$/', $mobile)) {
  189. $result = false;
  190. }
  191. }
  192. return $result;
  193. }
  194. /**
  195. * 校验参数为数字
  196. * @param string $varName 校验项
  197. * @return bool
  198. */
  199. public function digit($varName)
  200. {
  201. $result = false;
  202. if ($this->required($varName) && is_numeric($this->_data[$varName])) {
  203. $result = true;
  204. }
  205. return $result;
  206. }
  207. /**
  208. * 校验参数为身份证
  209. * @param string $varName 校验项
  210. * @return bool
  211. */
  212. public function ID($ID)
  213. {
  214. }
  215. /**
  216. * 校验参数为URL
  217. * @param string $varName 校验项
  218. * @return bool
  219. */
  220. public function url($url)
  221. {
  222. $result = true;
  223. /* 如果该项没有设置,默认为校验通过 */
  224. if ($this->required($varName)) {
  225. $url = trim($this->_data[$varName]);
  226. if(!preg_match('/^(http[s]?::)?\w+?(\.\w+?)$/', $url)) {
  227. $result = false;
  228. }
  229. }
  230. return $result;
  231. }
  232. }
  233. ?>
复制代码


相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.3万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号