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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
php出现Cannot modify header information问题的解决方法大全
Apr 09 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
php解决约瑟夫环示例
Apr 09 PHP
php编程每天必学之验证码
Mar 03 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
PHP微信网页授权的配置文件操作分析
May 29 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
PHP强制转化的形式整理
May 22 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中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
常用js脚本
2006/12/03 Javascript
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
微信小程序websocket实现聊天功能
2020/03/30 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
这样回答继承可能面试官更满意
2019/12/10 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
python计算书页码的统计数字问题实例
2014/09/26 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
如何基于Python创建目录文件夹
2019/12/31 Python
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
IBatis持久层技术
2016/07/18 面试题
居委会四风问题个人对照检查材料
2014/09/25 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
golang实现浏览器导出excel文件功能
2022/03/25 Golang
MySQL去除密码登录告警的方法
2022/04/20 MySQL
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技