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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
DedeCms模板安装/制作概述
Mar 11 PHP
php中var_export与var_dump的区别分析
Aug 21 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 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
基于php split()函数的用法详解
2013/06/05 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
原生JavaScript实现随机点名表
2021/01/14 Javascript
python logging日志模块以及多进程日志详解
2018/04/18 Python
python实现彩票系统
2020/06/28 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
python实现五子棋游戏
2019/06/18 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
设备动力科岗位职责范本
2014/02/23 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
工商局调档介绍信
2015/10/22 职场文书
MySql分区类型及创建分区的方法
2022/04/13 MySQL
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏
vue elementUI批量上传文件
2022/04/26 Vue.js
排查Tomcat进程假死的问题
2022/05/06 Servers
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技