您当前的位置: 首页 > 网站编程 > PHP教程 > php过滤敏感词实例代码

php过滤敏感词实例代码

作者:不详 来源:网络 发布时间: 2014-08-18 14:32 点击:
?php /** * Created by JetBrains PhpStorm. * User: lsl * Date: 13-8-28 * Time: 下午2:58 * 敏感词过滤工具类 * 使用方法 * echo FilterTools::filterContent(quot;你妈的我操一色狼杂种二山食物quot;,quot;*quot;,DIR.quot;config/word.txtquot;,$GLOBALS[quot;p_m

php过滤敏感词实例代码

  <?php

  /**

  * Created by JetBrains PhpStorm.

  * User: lsl

  * Date: 13-8-28

  * Time: 下午2:58

  * 敏感词过滤工具类

  * 使用方法

  * echo FilterTools::filterContent(&quot;你妈的我操一色狼杂种二山食物&quot;,&quot;*&quot;,DIR.&quot;config/word.txt&quot;,$GLOBALS[&quot;p_memcache&quot;][&quot;bad_words&quot;]);

  */

  class FilterTools {

      public static $keyword = array();

      /**

       * 从文件中加载敏感词

       * @param $filename

       * @return array

       */

      static function getBadWords($filename){

          $file_handle = fopen($filename, &quot;r&quot;);

          while (!feof($file_handle)) {

              $line = trim(fgets($file_handle));

              array_push(self::$keyword,$line);

          }

          fclose($file_handle);

          return self::$keyword;

      }

      /**

       * @param $content 待处理字符串

       * @param $target  替换后的字符

       * @param $filename  敏感词配置文件

       * @param $memconfig 缓存配置文件

       * @return 处理后的字符串

       */

      static function filterContent($content,$target,$filename,$memconfig){

          $mem = new BadWordsMemcache($filename,$memconfig);

          $keyword = $mem-&gt;getList();

          if(count($keyword) == 0){

              $keyword = self::getBadWords($filename);

          }

          return strtr($content, array_combine( $keyword, array_fill(0,count($keyword), $target)));

      }

  }

  /**

  * 敏感词缓存处理类

  * Class BadWordsMemcache

  * User: lsl

  */

  class BadWordsMemcache{

      var $memcache;

      var $key;

      var $list;

      var $filename;

      function __construct($filename,$memconfig) {

          $this-&gt;filename = $filename;

          if(!class_exists(&quot;P_Memcache&quot;)){

              require_once DIR.&quot;lib/memcache.class.php&quot;;

          }

          $this-&gt;key = &quot;bad_words&quot;;

          $this-&gt;memcache = new P_Memcache();

          $this-&gt;memcache-&gt;config = $memconfig;

          $this-&gt;memcache-&gt;connect();

          print_r($this-&gt;memcache);

          $this-&gt;init();

      }

      function __destruct() {

          $this-&gt;memcache-&gt;close();

      }

      /**

       * 初始化

       * @param bool $isReset

       */

      function init($isReset = false){

          $this-&gt;list = $this-&gt;memcache-&gt;get($this-&gt;key)?$this-&gt;memcache-&gt;get($this-&gt;key):array();

          if(count($this-&gt;list)==0 || $isReset){

              $this-&gt;list = filterTools::getBadWords($this-&gt;filename);

              $this-&gt;memcache-&gt;set($this-&gt;key, $this-&gt;list);

              $log_data = Log::formatData($this-&gt;list);

              Log::logWrite($log_data, 'bad.words','init');

          }

      }

      /**

       * 获取列表

       * @return mixed

       */

      function getList(){

          return $this-&gt;list;

      }

  }
分享到:
本文"php过滤敏感词实例代码"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4