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 相关文章推荐
WHOIS类的修改版
Oct 09 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
PHP zip扩展Linux下安装过程分享
May 05 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
May 12 PHP
php中运用http调用的GET和POST方法示例
Sep 29 PHP
php保存任意网络图片到服务器的方法
Apr 14 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
Paypal实现循环扣款(订阅)功能
Mar 23 PHP
PHP反射原理与用法深入分析
Sep 28 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/02/19 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
设定php简写功能的方法
2019/11/28 PHP
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
js中this用法实例详解
2015/05/05 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
js实现抽奖功能
2020/11/24 Javascript
python通过线程实现定时器timer的方法
2015/03/16 Python
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
python 实现return返回多个值
2019/11/19 Python
关于迟到的检讨书
2014/01/26 职场文书
学校消防演习方案
2014/02/19 职场文书
师范类求职信
2014/06/21 职场文书
治庸问责心得体会
2014/09/12 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS