加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-12 20:23:50 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解php实现的替换敏感字符串类及其用法,在php程序开发中有着非常广泛的应用价值。供大家参考研究。具体方法如下: StrFilter.class.php类文件如下: private $_white_list = array(); private $_black_list = array(); private $_replacem

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

StrFilter.class.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示例如下:

require("StrFilter.class.php");

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

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

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

完整实例代码点击

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读