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基础知识:类与对象(1)
Dec 13 PHP
adodb与adodb_lite之比较
Dec 31 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
php简单实现单态设计模式的方法分析
Jul 28 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 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
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
PHP实现变色验证码实例
2014/01/06 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
javascript实现yield的方法
2013/11/06 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
vue-cli设置publicPath小记
2020/04/14 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
财务出纳员岗位职责
2013/11/26 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
五年级下册复习计划
2015/01/19 职场文书
办公室岗位职责
2015/02/04 职场文书
公务员年度个人总结
2015/02/12 职场文书
2019邀请函格式及范文
2019/05/20 职场文书