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 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
php遍历数组的4种方法总结
Jul 05 PHP
PHP生成RSS文件类实例
Dec 05 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
基于swoole实现多人聊天室
Jun 14 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
tp5递归 无限级分类详解
Oct 18 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实现网上点歌(二)
2006/10/09 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
jQuery hover 延时器实现代码
2011/03/12 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
vue观察模式浅析
2018/09/25 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
JS实现拼图游戏
2021/01/29 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
浅谈numpy生成数组的零值问题
2018/11/12 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书