当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-14 10:30:36 浏览: 评论:0 

这篇文章主要介绍了php实现的替换敏感字符串类,包括了常见的非法字符串检测、白名单、黑名单及字符替换等功能,非常实用,需要的朋友可以参考下

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

StrFilter.class.php类文件如下:

  1. <?php  
  2. /** string filter class  
  3. * Date:   2013-01-09  
  4. * Author:  fdipzone  
  5. * Ver:   v1.0  
  6.  
  7. * Func:  
  8. * public replace      替换非法字符  
  9. * public check       检查是否含有非法字符  
  10. * private protect_white_list 保护白名单  
  11. * private resume_white_list 还原白名单  
  12. * private getval       白名单 key转为value  
  13. */ 
  14. class StrFilter{ // class start  
  15.    
  16.   private $_white_list = array();  
  17.   private $_black_list = array();  
  18.   private $_replacement = '*';  
  19.   private $_LTAG = '[[##';  
  20.   private $_RTAG = '##]]';  
  21.    
  22.   /**  
  23.   * @param Array $white_list  
  24.   * @param Array $black_list  
  25.   * @param String $replacement  
  26.   */ 
  27.   public function __construct($white_list=array(), $black_list=array(), $replacement='*'){  
  28.     $this->_white_list = $white_list;  
  29.     $this->_black_list = $black_list;  
  30.     $this->_replacement = $replacement;  
  31.   }  
  32.    
  33.   /** 替换非法字符  
  34.   * @param String $content 要替換的字符串  
  35.   * @return String     替換后的字符串  
  36.   */ 
  37.   public function replace($content){  
  38.    
  39.     if(!isset($content) || $content==''){  
  40.       return '';  
  41.     }  
  42.    
  43.     // protect white list  
  44.     $content = $this->protect_white_list($content);  
  45.    
  46.     // replace black list  
  47.     if($this->_black_list){  
  48.       foreach($this->_black_list as $val){  
  49.         $content = str_replace($val$this->_replacement, $content);  
  50.       }  
  51.     }  
  52.    
  53.     // resume white list  
  54.     $content = $this->resume_white_list($content);  
  55.    
  56.     return $content;  
  57.   }  
  58.    
  59.   /** 检查是否含有非法自符  
  60.   * @param String $content 字符串  
  61.   * @return boolean  
  62.   */ 
  63.   public function check($content){  
  64.    
  65.     if(!isset($content) || $content==''){  
  66.       return true;  
  67.     }  
  68.    
  69.     // protect white list  
  70.     $content = $this->protect_white_list($content);  
  71.    
  72.     // check  
  73.     if($this->_black_list){  
  74.       foreach($this->_black_list as $val){  
  75.         if(strstr($content$val)!=''){  
  76.           return false;  
  77.         }  
  78.       }  
  79.     }  
  80.     return true;  
  81.   }  
  82.    
  83.   /** 保护白名单  
  84.   * @param String $content 字符串  
  85.   * @return String  
  86.   */ 
  87.   private function protect_white_list($content){  
  88.     if($this->_white_list){  
  89.       foreach($this->_white_list as $key=>$val){  
  90.         $content = str_replace($val$this->_LTAG.$key.$this->_RTAG, $content);  
  91.       }  
  92.     }  
  93.     return $content;  
  94.   }  
  95.    
  96.   /** 还原白名单  
  97.   * @param String $content  
  98.   * @return String  
  99.   */ 
  100.   private function resume_white_list($content){  
  101.     if($this->_white_list){  
  102.       $content = preg_replace_callback("/\[\[##(.*?)##\]\].*?/si"array($this'getval'), $content);  
  103.     }  
  104.     return $content;  
  105.   }  
  106.   //www.phpfensi.com 
  107.   /** 白名单 key还原为value  
  108.   * @param Array $matches 匹配white_list的key  
  109.   * @return String white_list val  
  110.   */ 
  111.   private function getval($matches){  
  112.     return isset($this->_white_list[$matches[1]])? $this->_white_list[$matches[1]] : ''// key->val  
  113.   }  
  114. // class end  
  115. ?> 

demo示例如下:

  1. <?php  
  2.   header("content-type:text/html;charset=utf8");  
  3.    
  4.   require("StrFilter.class.php");  
  5.    
  6.   $white = array('屌丝''曹操');  
  7.   $black = array('屌''操');  
  8.    
  9.   $content = "我操,曹操你是屌丝,我屌你啊";  
  10.    
  11.   $obj = new StrFilter($white$black);  
  12.   echo $obj->replace($content);  
  13. ?> 

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

Tags: php敏感字符替换

分享到: