本文实例讲述了PHP实现的替换敏感字符串类及其用法,在PHP程序开发中有着非常广泛的应用价值。分享给大家供大家参考。具体方法如下:
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示例如下:
$white = array('屌丝','曹操');
$black = array('屌','操');
$content = "我操,曹操你是屌丝,我屌你啊";
$obj = new StrFilter($white,$black);
echo $obj->replace($content);
?>
完整实例代码点击
希望本文所述对大家PHP程序设计的学习有所帮助。