Zend Framework校验器Zend_Validate用法详解


Posted in PHP onDecember 09, 2016

本文实例讲述了Zend Framework校验器Zend_Validate用法。分享给大家供大家参考,具体如下:

引言:

是对输入内容进行检查,并生成一个布尔结果来表明内容是否被成功校验的机制。

如果isValid()方法返回False,子类的getMessage()方法将返回一个消息数组来解释校验失败的原因。

为了正确地返回消息与错误内容,对于isValid()方法的每次调用,都需要清除前一个isValid()方法调用所导致的消息和错误。

案例:

<?php
require_once 'Zend/Validate/EmailAddress.php';
function c_email($email)
{
  $validator = new Zend_Validate_EmailAddress();
  if($validator->isValid($email)){
    echo "输入的E-mail地址:";
    echo $email."有效!<p>";
  }else{
    echo "输入的E-mail地址:";
    echo $email."无效!";
    echo "失败消息为:<p>";
    foreach($validator->getMessages() as $message){
      echo $message."<p>";
    }
    foreach($validator->getErrors() as $error){
      echo $error."<p>";
    }
  }
}
$e_m1 = "abc@123.com";
$e_m2 = "abc#123.com";
c_email($e_m1);
c_email($e_m2);

结果:

输入的E-mail地址:abc@123.com有效!
输入的E-mail地址:abc#123.com无效!失败消息为:
'abc#123.com' is not a valid email address in the basic format local-part@hostname
emailAddressInvalidFormat

说明:

在引入类之后,定义一个验证函数,在函数中实例化类。用isValid()方法来进行验证,不同的子类验证器验证的内容是不一样的。
同时通过getMessages()方法和getErrors()方法来。

源码赏析:

public function isValid($value)
{
    if (!is_string($value)) {
      $this->_error(self::INVALID);
      return false;
    }
    $matches = array();
    $length = true;
    $this->_setValue($value);
    // Split email address up and disallow '..'
    if ((strpos($value, '..') !== false) or
      (!preg_match('/^(.+)@([^@]+)$/', $value, $matches))) {
      $this->_error(self::INVALID_FORMAT);
      return false;
    }
    $this->_localPart = $matches[1];
    $this->_hostname = $matches[2];
    if ((strlen($this->_localPart) > 64) || (strlen($this->_hostname) > 255)) {
      $length = false;
      $this->_error(self::LENGTH_EXCEEDED);
    }
    // Match hostname part
    if ($this->_options['domain']) {
      $hostname = $this->_validateHostnamePart();
    }
    $local = $this->_validateLocalPart();
    // If both parts valid, return true
    if ($local && $length) {
      if (($this->_options['domain'] && $hostname) || !$this->_options['domain']) {
        return true;
      }
    }
    return false;
}

解析:

这是主要的验证函数内容,分成了多种情况进行验证,有是否字符串,有是否符合邮箱规则,有长度是否符合,最终都符合才返回true。

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 PHP
PHP中动态显示签名和ip原理
Mar 28 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
PHP生成随机用户名和密码的实现代码
Feb 27 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
php cookie 详解使用实例
Nov 03 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 #PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 #PHP
浅谈PHP的数据库接口和技术
Dec 09 #PHP
magento后台无法登录解决办法的两种方法
Dec 09 #PHP
Zend Framework常用校验器详解
Dec 09 #PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 #PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 #PHP
You might like
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
nginx下安装php7+php5
2016/07/31 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
怎么清空javascript数组
2013/05/11 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
python logging模块的使用总结
2019/07/09 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
python中温度单位转换的实例方法
2020/12/27 Python
python+opencv实现车道线检测
2021/02/19 Python
介绍一下UNIX启动过程
2013/11/14 面试题
测绘工程个人的自我评价
2013/11/10 职场文书
教师辞职报告范文
2014/01/20 职场文书
捐书活动总结
2014/05/04 职场文书
面试感谢信范文
2015/01/22 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS