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 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
用php+javascript实现二级级联菜单的制作
May 06 PHP
php新建文件自动编号的思路与实现
Jun 27 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
Nov 20 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 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
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
js innerHTML 改变div内容的方法
2013/08/03 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
node中的session的具体使用
2018/09/14 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
Python的IDEL增加清屏功能实例
2017/06/19 Python
Python实现两款计算器功能示例
2017/12/19 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Python匿名函数及应用示例
2019/04/09 Python
python多线程下信号处理程序示例
2019/05/31 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
大学四年的个人自我评价
2014/01/14 职场文书
竞选班委演讲稿
2014/04/28 职场文书
科技工作者先进事迹
2014/08/16 职场文书
三好学生竞选稿范文
2019/08/21 职场文书