php實現的替換敏感字串類執行個體

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.