Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie PHP, um sensible Zeichenfolgenbezogene Vorgänge zu ersetzen

So verwenden Sie PHP, um sensible Zeichenfolgenbezogene Vorgänge zu ersetzen

jacklove
jackloveOriginal
2018-06-09 16:20:251446Durchsuche

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);
?>

In diesem Artikel wird erläutert, wie Sie sensible Zeichenfolgen mit PHP ersetzen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Informationen zum Durchlaufen von Ordnern und Dateiklassen sowie zum Verarbeiten von Klassen durch PHP

So übergeben Sie PHP Holen Sie sich die angegebene Inhaltsklasse auf der Seite

php Relevante Erklärung der Datei-Download-Klasse, die das Herunterladen von Haltepunkt-Lebensläufen unterstützt

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP, um sensible Zeichenfolgenbezogene Vorgänge zu ersetzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn