민감한 문자열을 대체하는 PHP 클래스(소스 코드 첨부)
풀어 주다: 2016-07-25 08:55:24
-
- /** string filter class
- * Date: 2013-01-09
- * Author: fdipzone
- * Ver: v1.0
- * Edit: bbs.it-home.org
- * 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;
- }
- /** 白名单 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
-
- ?>
复制代码
2,演示示例 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 替换敏感字符串的类源码下载地址。
|
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31