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 404错误页面实现代码
Jun 22 PHP
php echo()和print()、require()和include()函数区别说明
Mar 27 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
PHP中返回引用类型的方法
Apr 03 PHP
php获取访问者IP地址汇总
Apr 24 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
Aug 21 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
php生成HTML文件的类方法
Oct 11 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 PHP
PHP实现常用排序算法的方法
Feb 05 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 函数语法介绍一
2009/06/14 PHP
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
javascript操作数组详解
2014/12/17 Javascript
Node.js实现文件上传
2016/07/05 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
python回调函数的使用方法
2014/01/23 Python
python对字典进行排序实例
2014/09/25 Python
python根据路径导入模块的方法
2014/09/30 Python
介绍Python中的__future__模块
2015/04/27 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
如何理解Python中的变量
2020/06/01 Python
python switch 实现多分支选择功能
2020/12/21 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
PHP面试题及答案二
2015/05/23 面试题
国培计划培训感言
2014/03/11 职场文书
中学生打架检讨书
2014/10/13 职场文书
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS