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缓存设计实现代码
Sep 30 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
Jun 13 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
php微信公众号开发之简答题
Oct 20 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 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
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
jquery 常用操作方法
2010/01/28 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
Node.js的特点详解
2017/02/03 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
高性能装备提升营地:Kammok
2019/02/27 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
七匹狼男装广告词
2014/03/21 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
同学聚会祝酒词
2015/08/10 职场文书
德劲DE1108畅想
2021/04/22 无线电