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 相关文章推荐
一个连接两个不同MYSQL数据库的PHP程序
Oct 09 PHP
PHP注释实例技巧
Oct 03 PHP
php 采集书并合成txt格式的实现代码
Mar 01 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
PHP 透明水印生成代码
Aug 27 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 PHP
Laravel 修改验证异常的响应格式实例代码详解
May 25 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
做一个有下拉功能的留言版
2006/10/09 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
css配合jquery美化 select
2013/11/29 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
JS实现一个按钮的方法
2015/02/05 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
如何用python 操作zookeeper
2020/12/28 Python
2014年大学生就业规划书
2014/04/04 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
捐书活动倡议书
2015/04/27 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
golang生成vcf通讯录格式文件详情
2022/03/25 Golang