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 相关文章推荐
BBS(php &amp; mysql)完整版(八)
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
php使用session二维数组实例
Nov 06 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
php查找字符串中第一个非0的位置截取
Feb 27 PHP
PHP设计模式之工厂模式实例总结
Sep 01 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抽奖小程序的实现代码
2013/06/18 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
php编程每天必学之验证码
2016/03/03 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
python实现的登录和操作开心网脚本分享
2014/07/09 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python自动登录126邮箱的方法
2015/07/10 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
2015年学校教务处工作总结
2015/05/11 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
新闻通讯稿模板
2015/07/22 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL