Home  >  Article  >  Backend Development  >  How to use php to replace sensitive string related operations

How to use php to replace sensitive string related operations

jacklove
jackloveOriginal
2018-06-09 16:20:251449browse

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 = &#39;*&#39;;
    private $_LTAG = &#39;[[##&#39;;
    private $_RTAG = &#39;##]]&#39;;
    /**
    * @param Array  $white_list
    * @param Array  $black_list
    * @param String $replacement
    */
    public function __construct($white_list=array(), $black_list=array(), $replacement=&#39;*&#39;){
        $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==&#39;&#39;){
            return &#39;&#39;;
        }
        // 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==&#39;&#39;){
            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)!=&#39;&#39;){
                    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, &#39;getval&#39;), $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]] : &#39;&#39;; // key->val
    }
} // class end
?>

demo

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

This article explains how to use php to replace sensitive strings. For more related content, please pay attention to the php Chinese website.

Related recommendations:

About PHP traversing folders and file classes and processing classes

How to pass php Get the specified content class in the page

php Relevant explanation of the file download class that supports breakpoint resume transfer

The above is the detailed content of How to use php to replace sensitive string related operations. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn