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 相关文章推荐
url decode problem 解决方法
Dec 26 PHP
php缓存技术详细总结
Aug 07 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
php简单获取目录列表的方法
Mar 24 PHP
使用URL传输SESSION信息
Jul 14 PHP
PHP生成短网址方法汇总
Jul 12 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
php使用正则表达式去掉html中的注释方法
Nov 03 PHP
PHP实现的简单AES加密解密算法实例
May 29 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 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 中include()与require()的对比
2006/10/09 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
28个JS验证函数收集
2010/03/02 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
python让函数不返回结果的方法
2020/06/22 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
主治医师岗位职责
2013/12/10 职场文书
实习单位鉴定评语
2014/04/26 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
中药学专业求职信
2014/05/31 职场文书
实验室的标语
2014/06/20 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
师德师风自查材料
2014/10/14 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
春季运动会开幕词
2015/01/28 职场文书