Home  >  Article  >  Backend Development  >  Example of replacing sensitive string class implemented in PHP_PHP tutorial

Example of replacing sensitive string class implemented in PHP_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:18:47794browse

Example of replacement sensitive string class implemented by php

The StrFilter.class.php class file is as follows:

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

/**string filter class

* Date: 2013-01-09

* Author: fdipzone

* Ver: v1.0

*

* Func:

* public replace Replace illegal characters

* public check Check whether it contains illegal characters

* private protect_white_list protection whitelist

* private resume_white_list restore whitelist

* private getval Convert whitelist key to 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;

}

/** Replace illegal characters

* @param String $content The string to be replaced

  * @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; 

  } 

   

  /**Check for illegal self-characters

* @param String $content string

* @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; 

  } 

   

  /**Protection whitelist

* @param String $content string

* @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; 

  } 

   

  /**Restore whitelist

* @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

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); 

?>

1 2 3

4

6 7 8 9 10
11 12
13
<🎜>  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);  ?> http://www.bkjia.com/PHPjc/882702.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/882702.htmlTechArticlephp实现的替换敏感字符串类实例 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...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn