php实现的替换敏感字符串类实例
2014-09-22 16:00
211 查看
<?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); ?>
完整实例代码点击本站下载
希望本文所述对大家php程序设计的学习有所帮助。
您可能感兴趣的文章:
相关文章推荐
- php实现的替换敏感字符串类实例
- PHP实现在文章中加内链的实例(只替换一次)
- php使用str_replace替换多维数组的实现代码实例
- PHP中利用pcntl实现多进程(模拟多线程)实例
- PHP实例:用SESSION方法实现验证码
- php 全文搜索和替换的实现代码
- PHP实例:实现给上传图片加水印图案
- 实例学习PHP如何实现在线发邮件
- PHP实现多条件查询实例代码
- 利用Nginx的X-Accel-Redirect头实现下载控制(附带php和rails实例)
- php实现替换UTF-8 BOM(feff)
- php 全文搜索和实现替换的代码
- 使用php 的缓冲区功能和apache的url重写功能实现静态html生成实例
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- 实例讲解php实现中文水印的代码
- 实例讲解PHP中实现代码重用的两个函数
- 利用Nginx的X-Accel-Redirect头实现下载控制(附带php和rails实例)
- 利用discuz实现PHP大文件上传应用实例代码
- PHP类实例教程(二十三):PHP抽象类实现接口