程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 替換敏感字符串的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);  
?>

源碼下載地址:http://download.csdn.net/detail/fdipzone/5789781

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved