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 CURL获取邮箱地址的详解
Jun 03 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
通过php动态传数据到highcharts
Apr 05 PHP
PHP经典实用正则表达式小结
May 04 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
PHP学习 运算符与运算符优先级
2008/06/15 PHP
PHP EOT定界符的使用详解
2008/09/30 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
pdo中使用参数化查询sql
2011/08/11 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python实现顺时针打印矩阵
2019/03/02 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
五年级数学教学反思
2014/02/11 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
Mysql binlog日志文件过大的解决
2021/10/05 MySQL