本文实例讲述了php实现的替换敏感字符串类及其用法,在php程序开发中有着非常广泛的应用价值。分享给大家供大家参考。具体方法如下:
StrFilter.class.php类文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
<?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 ; } /** 白名单 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示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?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程序设计的学习有所帮助。