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 相关文章推荐
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 PHP
PHP迭代器实现斐波纳契数列的函数
Nov 12 PHP
smarty中post用法实例
Nov 28 PHP
php经典算法集锦
Nov 14 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
Jul 28 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
php-fpm添加service服务的例子
Apr 27 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
js简易版购物车功能
2017/06/17 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
python中int与str互转方法
2018/07/02 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
Python生成器generator原理及用法解析
2020/07/20 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
Puma印度官网:德国运动品牌
2019/10/06 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
群众路线对照检查材料
2014/09/22 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
python 远程执行命令的详细代码
2022/02/15 Python