网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 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);
    ?>
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/24 8:39:04