php实现的替换敏感字符串类实例_php技巧

WBOY
Release: 2016-05-16 20:35:56
Original
931 people have browsed it

本文实例讲述了php实现的替换敏感字符串类及其用法,在php程序开发中有着非常广泛的应用价值。分享给大家供大家参考。具体方法如下:

StrFilter.class.php类文件如下:

<&#63;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("/\[\[##(.*&#63;)##\]\].*&#63;/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]])&#63; $this->_white_list[$matches[1]] : ''; // key->val 
  } 
} // class end 
&#63;>

Copy after login

demo示例如下:

<&#63;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); 
&#63;>

Copy after login

完整实例代码点击本站下载

希望本文所述对大家php程序设计的学习有所帮助。

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template