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面向对象编程快速入门
Oct 09 PHP
基于php split()函数的用法详解
Jun 05 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
两款万能的php分页类
Nov 12 PHP
分享php多功能图片处理类
May 15 PHP
一段实用的php验证码函数
May 19 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 PHP
PHP 计算两个时间段之间交集的天数示例
Oct 24 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
用穿越火线快速入门php面向对象
2012/02/22 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python和php学习哪个更有发展
2020/06/17 Python
python GUI模拟实现计算器
2020/06/22 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
家长通知书家长评语
2014/04/17 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
2015年预算员工作总结
2015/05/14 职场文书
工作简报格式范文
2015/07/21 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL