PHP
·
发表于 5年以前
·
阅读量:8309
±¾ÎÄʵÀý½²ÊoÁËphpʵÏÖµÄÌae»»Ão¸Ð×Öu´®Àa¼°ÆaÓ裬ÔÚphp³ÌÐo¿ª¢ÖÐÓÐ×Ådz£¹aºµÄÓ¦ÓüÛÖµ¡£ÖÏi¸ø´o¼Ò¹(C)´o¼Ò²Î¿¼¡£¾ßÌa½¨ÈçÏ£º
StrFilter.class.phpÀaÎļþÈçÏ£º
<?php
/** string filter class
* Date: 2013-01-09
* Author: fdipzone
* Ver: v1.0
*
* Func:
* public replace Ìae»»*Ç*¨×Ö*u
* public check ¼i²eÊÇ*ñº¬ÓÐ*Ç*¨×Ö*u
* private protect_white_list ±£»¤°×Ãuµ¥
* private resume_white_list »¹Ô°×Ãuµ¥
* private getval °×Ãuµ¥ 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;
}
/** Ìae»»*Ç*¨×Ö*u
* @param String $content ÒªÌae"QµÄ×Ö*u´®
* @return String Ìae"QºoµÄ×Ö*u´®
*/
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;
}
/** ¼i²eÊÇ*ñº¬ÓÐ*Ç*¨×Ô*u
* @param String $content ×Ö*u´®
* @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;
}
/** ±£»¤°×Ãuµ¥
* @param String $content ×Ö*u´®
* @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;
}
/** »¹Ô°×Ãuµ¥
* @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;
}
/** °×Ãuµ¥ key»¹ÔΪvalue
* @param Array $matches Æ¥Åawhite_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 = "ÎÒ²Ù,²Ü²ÙÄaÊÇŒÅË¿,ÎÒŒÅÄa°¡";
$obj = new StrFilter($white, $black);
echo $obj->replace($content);
?>
ÍeÕuʵÀý´uÂeµa»÷±¾Õ¾ÏÂÔØ
Ï£Íu±¾ÎÄËuÊo¶Ô´o¼Òphp³ÌÐoÉe¼ÆµÄѧϰÓÐËu°iÖu¡£