php实现的替换敏感字符串类实例

本文实例讲述了php实现的替换敏感字符串类及其用法,在php程序开发中有着非常广泛的应用价值。分享给大家供大家参考。具体方法如下:

StrFilter.class.php类文件如下:

<?php /** string filter class * Date:   2013-01-09 * Author:  fdipzone * Ver:   v1.0 * * Func: * public replace      替换非法字符 * public check       检查是否含有非法字符 * private protect_white_list 保护白名单 * private resume_white_list 还原白名单 * private getval       白名单 key转为value */ class StrFilter{ // class start    private $_white_list = array();   private $_black_list = array();   private $_replacement = '*';   private $_LTAG = '[[##';   private $_RTAG = '##]]';    /**   * @param Array $white_list   * @param Array $black_list   * @param String $replacement   */   public function __construct($white_list=array(), $black_list=array(), $replacement='*'){     $this->_white_list = $white_list;     $this->_black_list = $black_list;     $this->_replacement = $replacement;   }    /** 替换非法字符   * @param String $content 要替的字符串   * @return String     替后的字符串   */   public function replace($content){      if(!isset($content) || $content==''){       return '';     }      // protect white list     $content = $this->protect_white_list($content);      // replace black list     if($this->_black_list){       foreach($this->_black_list as $val){         $content = str_replace($val, $this->_replacement, $content);       }     }      // resume white list     $content = $this->resume_white_list($content);      return $content;   }    /** 检查是否含有非法自符   * @param String $content 字符串   * @return boolean   */   public function check($content){      if(!isset($content) || $content==''){       return true;     }      // protect white list     $content = $this->protect_white_list($content);      // check     if($this->_black_list){       foreach($this->_black_list as $val){         if(strstr($content, $val)!=''){           return false;         }       }     }     return true;   }    /** 保护白名单   * @param String $content 字符串   * @return String   */   private function protect_white_list($content){     if($this->_white_list){       foreach($this->_white_list as $key=>$val){         $content = str_replace($val, $this->_LTAG.$key.$this->_RTAG, $content);       }     }     return $content;   }    /** 还原白名单   * @param String $content   * @return String   */   private function resume_white_list($content){     if($this->_white_list){       $content = preg_replace_callback("//[/[##(.*?)##/]/].*?/si", array($this, 'getval'), $content);     }     return $content;   }    /** 白名单 key还原为value   * @param Array $matches 匹配white_list的key   * @return String white_list val   */   private function getval($matches){     return isset($this->_white_list[$matches[1]])? $this->_white_list[$matches[1]] : ''; // key->val   } } // class end ?>

demo示例如下:

<?php   header("content-type:text/html;charset=utf8");    require("StrFilter.class.php");    $white = array('丝', '曹操');   $black = array('', '操');    $content = "我操,曹操你是丝,我你啊";    $obj = new StrFilter($white, $black);   echo $obj->replace($content); ?>

完整实例代码点击本站下载

希望本文所述对大家php程序设计的学习有所帮助。

php技术php实现的替换敏感字符串类实例,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。