ucenter中词语过滤原理分析


Posted in PHP onJuly 13, 2016

本文分析了ucenter中词语过滤原理。分享给大家供大家参考,具体如下:

过滤词语表:

id admin find replacement findpattern
1 UCenterAdminist 访问 /访问/is
2 UCenterAdminist 4655 45 /4655/is
3 UCenterAdminist fdsaf dfsa /fdsaf/is
4 UCenterAdminist 有机会 /有机会/is

组建缓存数据:

//private
function _get_badwords() {
  $data = $this->db->fetch_all("SELECT * FROM ".UC_DBTABLEPRE."badwords");
  $return = array();
  if(is_array($data)) {
    foreach($data as $k => $v) {
      $return['findpattern'][$k] = $v['findpattern'];
      $return['replace'][$k] = $v['replacement'];
    }
  }
  return $return;
}

调用方法:

$_CACHE['badwords'] = $this->base->cache('badwords');
if($_CACHE['badwords']['findpattern']) {
  $subject = @preg_replace($_CACHE['badwords']['findpattern'], $_CACHE['badwords']['replace'], $subject);
  $message = @preg_replace($_CACHE['badwords']['findpattern'], $_CACHE['badwords']['replace'], $message);
}

preg_replace() 的每个参数(除了 limit)都可以是一个数组。如果 pattern 和 replacement 都是数组,将以其键名在数组中出现的顺序来进行处理。这不一定和索引的数字顺序相同。如果使用索引来标识哪个 pattern 将被哪个 replacement 来替换,应该在调用 preg_replace() 之前用 ksort() 对数组进行排序。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php中几种常见安全设置详解
Apr 06 PHP
PHP开发负载均衡指南
Jul 17 PHP
PHP中常用的输出函数总结
Sep 22 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
Feb 15 PHP
php中删除、清空session的方式总结
Oct 09 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 PHP
Laravel监听数据库访问,打印SQL的例子
Oct 24 PHP
Yii框架模拟组件调用注入示例
Nov 11 PHP
PHP单元测试配置与使用方法详解
Dec 27 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 #PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 #PHP
Yii隐藏URL中index.php的方法
Jul 12 #PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 #PHP
Yii CGridView用法实例详解
Jul 12 #PHP
Yii视图CGridView列表用法实例分析
Jul 12 #PHP
微信支付开发动态链接Native支付
Jul 12 #PHP
You might like
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
php车辆违章查询数据示例
2016/10/14 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
JavaScript 程序编码规范
2010/11/23 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
js date 格式化
2017/02/15 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
JS实现图片切换特效
2019/12/23 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
Python列表生成式与生成器操作示例
2018/08/01 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
2014年团委工作总结
2014/11/13 职场文书
学习保证书
2015/01/17 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书