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 相关文章推荐
解析mysql left( right ) join使用on与where筛选的差异
Jun 18 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
学习php设计模式 php实现工厂模式(factory)
Dec 07 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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
mysql5详细安装教程
2007/01/15 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
javascript定义函数的方法
2010/12/06 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
react-native封装插件swiper的使用方法
2018/03/20 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
浅析Python 中整型对象存储的位置
2016/05/16 Python
python实现百度语音识别api
2018/04/10 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
Python日期时间Time模块实例详解
2019/04/15 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
python 整数越界问题详解
2019/06/27 Python
python list转置和前后反转的例子
2019/08/26 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
Python实现数字的格式化输出
2020/08/01 Python
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
先进党组织事迹材料
2014/12/26 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
出纳试用期自我评价
2015/03/10 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
Mysql中存储引擎的区别及比较
2021/06/04 MySQL
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
Python音乐爬虫完美绕过反爬
2021/08/30 Python
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技