程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php實現的替換敏感字符串類實例

php實現的替換敏感字符串類實例

編輯:關於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);  ?>
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved