首页 > 开发 > PHP > 正文

Zend Framework过滤器Zend_Filter用法详解

2024-05-04 22:50:24
字体:
来源:转载
供稿:网友

本文实例讲述了Zend Framework过滤器Zend_Filter用法。分享给大家供大家参考,具体如下:

引言:过滤器是对输入内容进行过滤,清除其中不符合过滤规则的内容,并将其余内容返回的过程。

Zend中有个Zend_Filter组件用来实现过滤的功能。其中有个Zend_Filter_Interface子类,该子类为实现一般过滤器提供了接口。

要实现过滤器类,需要实现该接口中一个名为filter()的方法。

下面通过实例来演示如何使用Zend_Filter中定义的过滤器,该例演示如何实现字母转小写的功能。

代码:

<?phprequire_once 'Zend/Filter/StringToLower.php';  //加载子类$filter = new Zend_Filter_StringToLower;    //实例化对象$temp1 = "ABCDefGH";              //定义待过滤内容$temp2 = "我爱Nan Jing";echo "内容:".$temp1."<p>经过滤后为:";echo $filter->filter($temp1);echo "<p>";echo "内容:".$temp2."<p>经过滤后为:";echo $filter->filter($temp2);

结果:

内容:ABCDefGH
经过滤后为:abcdefgh
内容:我爱Nan Jing
经过滤后为:我爱nan jing

为什么如此神奇呢?不禁让我想探索一下其内部的构造!下面来研读一下其内部的工作原理。

class Zend_Filter_StringToLower implements Zend_Filter_Interface{  /**   * Encoding for the input string   *   * @var string   */  protected $_encoding = null;  /**   * Constructor   *   * @param string|array|Zend_Config $options OPTIONAL   */  public function __construct($options = null)  {    if ($options instanceof Zend_Config) {      $options = $options->toArray();    } else if (!is_array($options)) {      $options = func_get_args();      $temp  = array();      if (!empty($options)) {        $temp['encoding'] = array_shift($options);      }      $options = $temp;    }    if (!array_key_exists('encoding', $options) && function_exists('mb_internal_encoding')) {      $options['encoding'] = mb_internal_encoding();    }    if (array_key_exists('encoding', $options)) {      $this->setEncoding($options['encoding']);    }  }  /**   * Returns the set encoding   *   * @return string   */  public function getEncoding()  {    return $this->_encoding;  }  /**   * Set the input encoding for the given string   *   * @param string $encoding   * @return Zend_Filter_StringToLower Provides a fluent interface   * @throws Zend_Filter_Exception   */  public function setEncoding($encoding = null)  {    if ($encoding !== null) {      if (!function_exists('mb_strtolower')) {        require_once 'Zend/Filter/Exception.php';        throw new Zend_Filter_Exception('mbstring is required for this feature');      }      $encoding = (string) $encoding;      if (!in_array(strtolower($encoding), array_map('strtolower', mb_list_encodings()))) {        require_once 'Zend/Filter/Exception.php';        throw new Zend_Filter_Exception("The given encoding '$encoding' is not supported by mbstring");      }    }    $this->_encoding = $encoding;    return $this;  }  /**   * Defined by Zend_Filter_Interface   *   * Returns the string $value, converting characters to lowercase as necessary   *   * @param string $value   * @return string   */  public function filter($value)  {    if ($this->_encoding !== null) {      return mb_strtolower((string) $value, $this->_encoding);    }    return strtolower((string) $value);  }}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表