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 define函数的使用说明
Aug 27 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
php删除指定目录的方法
Apr 03 PHP
老生常谈文本文件和二进制文件的区别
Feb 27 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
PHP实现的数据对象映射模式详解
Mar 20 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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中常用编辑器推荐
2007/01/02 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
详解python metaclass(元类)
2020/08/13 Python
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
中间件的定义
2016/08/09 面试题
护士自我鉴定
2013/10/23 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
电子商务专业自荐信
2014/06/02 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
运动会入场词
2015/07/18 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书