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制作新闻系统的思路
Oct 09 PHP
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
对javascript和select部件的结合运用
Oct 09 PHP
深入php之规范编程命名小结
May 15 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
PHP使用PHPMailer发送邮件的简单使用方法
Nov 12 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
php+mysql开发中的经验与常识小结
Mar 25 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相对当前文件include其它文件的方法
2015/03/13 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
如何测量vue应用运行时的性能
2019/06/21 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
离婚纠纷代理词
2015/05/23 职场文书
房产电话营销开场白
2015/05/29 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL