php 替换敏感字符串
2017-06-10 12:40
176 查看
StrFilter.class.php
[php]
view plain
copy
<?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
e02b
'';
}
// 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]
view plain
copy
<?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);
?>
[php]
view plain
copy
<?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
e02b
'';
}
// 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]
view plain
copy
<?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);
?>
相关文章推荐
- php 设置提交信息后自动替换敏感字符加单引号
- php过滤所有恶意字符(批量过滤post,get敏感数据)
- php字符串与字符替换函数
- 敏感内容替换(字符替换过滤器)
- PHP 敏感词替换
- php过滤所有恶意字符(批量过滤post,get敏感数据)
- PHP替换特殊字符
- php字符串与字符替换函数
- PHP基础--strtr和str_replace字符替换函数
- mysql数据库所有表字符替换PHP代码
- php替换字符串中间字符为省略号的方法
- PHP中利用substr_replace将指定两位置之间的字符替换为*号
- 读取敏感词库内容,讲某段字符里面的敏感词替换成*
- php str_replace替换特殊字符
- 【代码优化】敏感字符替换为“*”
- JavaScript——替换敏感字符并实现字符统计
- 敏感字符替换服务
- php 自定字符串中的部分字符进行替换方法
- php将敏感词替换为*的方法
- Java Web对前台传过来参数中的敏感字符进行过滤替换