php实现的替换敏感字符串类实例
本文实例讲述了php实现的替换敏感字符串类及其用法,在php程序开发中有着非常广泛的应用价值。分享给大家供大家参考。具体方法如下:
StrFilter.class.php类文件如下:
<?php
/**stringfilterclass
*Date:2013-01-09
*Author:fdipzone
*Ver:v1.0
*
*Func:
*publicreplace替换非法字符
*publiccheck检查是否含有非法字符
*privateprotect_white_list保护白名单
*privateresume_white_list还原白名单
*privategetval白名单key转为value
*/
classStrFilter{//classstart
private$_white_list=array();
private$_black_list=array();
private$_replacement='*';
private$_LTAG='[[##';
private$_RTAG='##]]';
/**
*@paramArray$white_list
*@paramArray$black_list
*@paramString$replacement
*/
publicfunction__construct($white_list=array(),$black_list=array(),$replacement='*'){
$this->_white_list=$white_list;
$this->_black_list=$black_list;
$this->_replacement=$replacement;
}
/**替换非法字符
*@paramString$content要替換的字符串
*@returnString替換后的字符串
*/
publicfunctionreplace($content){
if(!isset($content)||$content==''){
return'';
}
//protectwhitelist
$content=$this->protect_white_list($content);
//replaceblacklist
if($this->_black_list){
foreach($this->_black_listas$val){
$content=str_replace($val,$this->_replacement,$content);
}
}
//resumewhitelist
$content=$this->resume_white_list($content);
return$content;
}
/**检查是否含有非法自符
*@paramString$content字符串
*@returnboolean
*/
publicfunctioncheck($content){
if(!isset($content)||$content==''){
returntrue;
}
//protectwhitelist
$content=$this->protect_white_list($content);
//check
if($this->_black_list){
foreach($this->_black_listas$val){
if(strstr($content,$val)!=''){
returnfalse;
}
}
}
returntrue;
}
/**保护白名单
*@paramString$content字符串
*@returnString
*/
privatefunctionprotect_white_list($content){
if($this->_white_list){
foreach($this->_white_listas$key=>$val){
$content=str_replace($val,$this->_LTAG.$key.$this->_RTAG,$content);
}
}
return$content;
}
/**还原白名单
*@paramString$content
*@returnString
*/
privatefunctionresume_white_list($content){
if($this->_white_list){
$content=preg_replace_callback("/\[\[##(.*?)##\]\].*?/si",array($this,'getval'),$content);
}
return$content;
}
/**白名单key还原为value
*@paramArray$matches匹配white_list的key
*@returnStringwhite_listval
*/
privatefunctiongetval($matches){
returnisset($this->_white_list[$matches[1]])?$this->_white_list[$matches[1]]:'';//key->val
}
}//classend
?>
demo示例如下:
<?php
header("content-type:text/html;charset=utf8");
require("StrFilter.class.php");
$white=array('屌丝','曹操');
$black=array('屌','操');
$content="我操,曹操你是屌丝,我屌你啊";
$obj=newStrFilter($white,$black);
echo$obj->replace($content);
?>
完整实例代码点击本站下载
希望本文所述对大家php程序设计的学习有所帮助。