php实现的替换敏感字符串类实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-14 10:30:36 浏览: 评论:0
这篇文章主要介绍了php实现的替换敏感字符串类,包括了常见的非法字符串检测、白名单、黑名单及字符替换等功能,非常实用,需要的朋友可以参考下
本文实例讲述了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 要替換的字符串
- * @return String 替換后的字符串
- */
- 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;
- }
- //www.phpfensi.com
- /** 白名单 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程序设计的学习有所帮助。
Tags: php敏感字符替换
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)