替换敏感字符串的php代码 - 面向对象网 php 学习 对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > OOP语言 > PHP > 正文

替换敏感字符串的php代码

来源: www.bianceng.cn 阅读:

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

查看本栏目更多精彩内容:http://www.bianceng.cn/webkf/PHP/

Tags:
相关文章列表: