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

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

StrFilter.class.PHP文件如下:

rush:PHP;"> 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示例如下:

rush:PHP;"> require("StrFilter.class.php");

$white = array('屌丝','曹操');
$black = array('屌','操');

$content = "我操,曹操你是屌丝,我屌你啊";

$obj = new StrFilter($white,$black);
echo $obj->replace($content);
?>

完整实例代码点击

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...