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 工厂模式使用方法
May 18 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 PHP
php中自定义函数dump查看数组信息类似var_dump
Jan 27 PHP
php阻止页面后退的方法分享
Feb 17 PHP
基于PHP的简单采集数据入库程序
Jul 30 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
Joomla数据库操作之JFactory::getDBO用法
May 05 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
php的laravel框架快速集成微信登录的方法
Dec 12 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 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学习 运算符与运算符优先级
2008/06/15 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
Python中给List添加元素的4种方法分享
2014/11/28 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
python如何将两个txt文件内容合并
2019/10/18 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
东方红海科技面试题软件测试方面
2012/02/08 面试题
暑期实践思想汇报
2014/01/06 职场文书
2014自荐信的写作技巧
2014/01/28 职场文书
十八大宣传标语
2014/10/09 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL