php实现的替换敏感字符串类实例


Posted in PHP onSeptember 22, 2014

本文实例讲述了php实现的替换敏感字符串类及其用法,在php程序开发中有着非常广泛的应用价值。分享给大家供大家参考。具体方法如下:

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 要替?Q的字符串 
  * @return String     替?Q后的字符串 
  */ 
  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&amp;mysql(一)
Oct 09 PHP
set_include_path在win和linux下的区别
Jan 10 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
php时区转换转换函数
Jan 07 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
Jan 08 PHP
PHP常见的6个错误提示及解决方法
Jul 07 PHP
php封装的mysqli类完整实例
Oct 18 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
PHP PDOStatement::bindValue讲解
Jan 30 PHP
php实现的发送带附件邮件类实例
Sep 22 #PHP
PHP实现AES256加密算法实例
Sep 22 #PHP
php生成QRcode实例
Sep 22 #PHP
php实现的Captcha验证码类实例
Sep 22 #PHP
php中unserialize返回false的解决方法
Sep 22 #PHP
php实现根据字符串生成对应数组的方法
Sep 22 #PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 #PHP
You might like
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
php中计算时间差的几种方法
2009/12/31 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
php格式化时间戳
2016/12/17 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python创建和使用字典实例详解
2013/11/01 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
Python 如何展开嵌套的序列
2020/08/01 Python
python3中数组逆序输出方法
2020/12/01 Python
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
2015年度党员自我评价范文
2015/03/03 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
红色经典观后感
2015/06/18 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
导游词之太原天龙山
2020/01/02 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
用golang如何替换某个文件中的字符串
2021/04/25 Golang
springboot实现string转json json里面带数组
2022/06/16 Java/Android