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数组操作汇总 php数组的使用技巧
Jul 17 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
php使用PDO方法详解
Dec 27 PHP
PHP中让curl支持sock5的代码实例
Jan 21 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
Laravel框架实现简单的学生信息管理平台案例
May 07 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 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
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
PHP insert语法详解
2008/06/07 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Python脚本实现集群检测和管理功能
2015/03/06 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python适合人工智能的理由和优势
2019/06/28 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
在线服装零售商:SheIn
2016/07/22 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
公司财务自我评价分享
2013/12/17 职场文书
护理专业自荐书
2014/06/04 职场文书
班级活动总结格式
2014/08/30 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技