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 相关文章推荐
解决FastCGI 进程超过了配置的活动超时时限的问题
Jul 03 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
PHPThumb图片处理实例
May 03 PHP
php过滤html标记属性类用法实例
Sep 23 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
PHP isset()与empty()的使用区别详解
Feb 10 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
javascript object array方法使用详解
2012/12/03 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
vue各种事件监听实例(小结)
2020/06/24 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
Python+微信接口实现运维报警
2016/08/27 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
python实现决策树分类(2)
2018/08/30 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
python 下载文件的多种方法汇总
2020/11/17 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
师范生自荐信范文
2013/10/06 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
干部个人对照检查材料
2014/08/25 职场文书
综合实践活动报告
2015/02/05 职场文书
教师个人培训总结
2015/02/11 职场文书
横空出世观后感
2015/06/09 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书