Home  >  Article  >  Backend Development  >  PHP class to replace sensitive strings (source code attached)

PHP class to replace sensitive strings (source code attached)

WBOY
WBOYOriginal
2016-07-25 08:55:241099browse
  1. /**string filter class
  2. * Date: 2013-01-09
  3. * Author: fdipzone
  4. * Ver: v1.0
  5. * Edit: bbs.it-home.org
  6. * Func:
  7. * public replace Replace illegal characters
  8. * public check Check whether it contains illegal characters
  9. * private protect_white_list protect the whitelist
  10. * private resume_white_list restore the whitelist
  11. * private getval whitelist key to value
  12. */
  13. class StrFilter{ // class start
  14. private $_white_list = array();
  15. private $_black_list = array();
  16. private $_replacement = '*';
  17. private $_LTAG = '[[##';
  18. private $_RTAG = '##]]';
  19. /**
  20. * @param Array $white_list
  21. * @param Array $black_list
  22. * @param String $replacement
  23. */
  24. public function __construct($white_list=array(), $black_list=array(), $replacement='*'){
  25. $this->_white_list = $white_list;
  26. $this->_black_list = $black_list;
  27. $this->_replacement = $replacement;
  28. }
  29. /**Replace illegal characters
  30. * @param String $content The string to be replaced
  31. * @return String The replaced string
  32. */
  33. public function replace($content){
  34. if(!isset($content) || $content==''){
  35. return '';
  36. }
  37. // protect white list
  38. $content = $this->protect_white_list($content);
  39. // replace black list
  40. if($this->_black_list){
  41. foreach($this->_black_list as $val){
  42. $content = str_replace($val, $this->_replacement, $content);
  43. }
  44. }
  45. // resume white list
  46. $content = $this->resume_white_list($content);
  47. return $content;
  48. }
  49. /**Check whether it contains illegal self-characters
  50. * @param String $content string
  51. * @return boolean
  52. */
  53. public function check($content){
  54. if(!isset($content) || $content==''){
  55. return true;
  56. }
  57. // protect white list
  58. $content = $this->protect_white_list($content);
  59. // check
  60. if($this->_black_list){
  61. foreach($this->_black_list as $val){
  62. if(strstr($content, $val)!=''){
  63. return false;
  64. }
  65. }
  66. }
  67. return true;
  68. }
  69. /**Protection whitelist
  70. * @param String $content string
  71. * @return String
  72. */
  73. private function protect_white_list($content){
  74. if($this->_white_list){
  75. foreach($this->_white_list as $key=>$val){
  76. $content = str_replace($val, $this->_LTAG.$key.$this->_RTAG, $content);
  77. }
  78. }
  79. return $content;
  80. }
  81. /**Restore whitelist
  82. * @param String $content
  83. * @return String
  84. */
  85. private function resume_white_list($content){
  86. if($this->_white_list){
  87. $content = preg_replace_callback("/[[##(.*?)##]].*?/si", array($this, 'getval'), $content);
  88. }
  89. return $content;
  90. }
  91. /**Whitelist key is restored to value
  92. * @param Array $matches matches the key of white_list
  93. * @return String white_list val
  94. */
  95. private function getval($matches){
  96. return isset($this->_white_list[$matches[1]])? $this->_white_list[$matches[1]] : ''; // key->val
  97. }
  98. } // class end
  99. ?>
复制代码

2,演示示例 demo.php

  1. header("content-type:text/html;charset=utf8");
  2. require("StrFilter.class.php");
  3. $white = array('屌丝', '曹操');
  4. $black = array('屌', '操');
  5. $content = "我操,曹操你是屌丝,我屌你啊";
  6. $obj = new StrFilter($white, $black);
  7. echo $obj->replace($content);
  8. ?>
复制代码

附,php 替换敏感字符串的类源码下载地址。



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