phpʵÏÖµÄÌæ»»Ãô¸Ð×Ö·û´®ÀàʵÀý

5年以前  |  阅读数:239 次  |  编程语言:PHP 

±¾ÎÄʵÀý½²ÊoÁËphpʵÏÖµÄÌae»»Ão¸Ð×Öu´®Àa¼°ÆaÓ裬ÔÚphp³ÌÐo¿ª¢ÖÐÓÐ×Ådz£¹aºµÄÓ¦ÓüÛÖµ¡£ÖÏi¸ø´o¼Ò¹(C)´o¼Ò²Î¿¼¡£¾ßÌa½¨ÈçÏ£º

StrFilter.class.phpÀaÎļþÈçÏ£º


    <?php 
    /** string filter class 
    * Date:   2013-01-09 
    * Author:  fdipzone 
    * Ver:   v1.0 
    * 
    * Func: 
    * public replace      Ìae»»*Ç*¨×Ö*u 
    * public check       ¼i²eÊÇ*ñº¬ÓÐ*Ç*¨×Ö*u 
    * private protect_white_list ±£»¤°×Ãuµ¥ 
    * private resume_white_list »¹Ô­°×Ãuµ¥ 
    * private getval       °×Ãuµ¥ 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; 
      } 

      /** Ìae»»*Ç*¨×Ö*u 
      * @param String $content ÒªÌae"QµÄ×Ö*u´® 
      * @return String     Ìae"QºoµÄ×Ö*u´® 
      */ 
      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; 
      } 

      /** ¼i²eÊÇ*ñº¬ÓÐ*Ç*¨×Ô*u 
      * @param String $content ×Ö*u´® 
      * @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; 
      } 

      /** ±£»¤°×Ãuµ¥ 
      * @param String $content ×Ö*u´® 
      * @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; 
      } 

      /** »¹Ô­°×Ãuµ¥ 
      * @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; 
      } 

      /** °×Ãuµ¥ key»¹Ô­Îªvalue 
      * @param Array $matches Æ¥Åawhite_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ʾÀýÈçÏ£º


    <?php 
      header("content-type:text/html;charset=utf8"); 

      require("StrFilter.class.php"); 

      $white = array('ŒÅË¿', '²Ü²Ù'); 
      $black = array('ŒÅ', '²Ù'); 

      $content = "ÎÒ²Ù,²Ü²ÙÄaÊÇŒÅË¿,ÎÒŒÅÄa°¡"; 

      $obj = new StrFilter($white, $black); 
      echo $obj->replace($content); 
    ?>

ÍeÕuʵÀý´uÂeµa»÷±¾Õ¾ÏÂÔØ

Ï£Íu±¾ÎÄËuÊo¶Ô´o¼Òphp³ÌÐoÉe¼ÆµÄѧϰÓÐËu°iÖu¡£

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例