**StrFilter.class.php**
~~~
<?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 '';
}
// 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
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);
?>
~~~
**源碼下載地址:[點擊下載](http://download.csdn.net/detail/fdipzone/5789781)**
- 前言
- php Captcha 驗證碼類
- php 替換敏感字符串
- php返回數據格式化類
- php XML文件解釋類
- php CSS Update Class
- PHPMailer - PHP email transport class
- PHP 遍歷文件夾及文件類及處理類
- 自動登入google play下載app report
- php click captcha 驗證碼類
- php 獲取頁面中的指定內容類
- php 支持斷點續傳的文件下載類
- php 縮略圖生成類,支持imagemagick及gd庫兩種處理
- php 根據url自動生成縮略圖
- php 過濾html標記屬性類
- php HTTP請求類,支持GET,POST,Multipart/form-data
- php Cookies 操作類
- php 密碼生成類
- php main 與 iframe 相互通訊類(同域/跨域)
- php 根據url自動生成縮略圖,并處理高并發問題
- php Timer 頁面運行時間監測類
- php 雙向隊列類
- php 導出CSV抽象類
- php zip文件內容比較類
- php 獲取/設置用戶訪問頁面語言類
- php 獲取Youtube某個User所有Video信息
- php 字符編碼轉換類,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相轉換
- php 版本處理類