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
Dec 13 PHP
PHP HTML代码串 截取实现代码
Jun 29 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
php把session写入数据库示例
Feb 26 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
Yii2 rbac权限控制操作步骤实例教程
Apr 29 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 PHP
CI框架简单分页类用法示例
Jun 06 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
JAVA/JSP学习系列之四
2006/10/09 PHP
使用字符串函数输出整数化的PHP版本号
2006/10/09 PHP
PHP SQLite类
2009/05/07 PHP
php实现的mongodb操作类
2015/05/28 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
2019/03/21 PHP
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
java必学必会之static关键字
2015/12/03 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
js Dom实现换肤效果
2017/10/21 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
python实现的简单文本类游戏实例
2015/04/28 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
Django框架模板用法入门教程
2019/11/04 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
视图的作用
2014/12/19 面试题
药学专业个人自我评价
2013/11/11 职场文书
2014村务公开实施方案
2014/02/25 职场文书
工作岗位说明书模板
2014/05/09 职场文书
派出所所长先进事迹
2014/05/19 职场文书
服务承诺口号
2014/05/22 职场文书
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL