ThinkPHP自动获取关键词调用在线discuz词库

先按照下图路径放好插件

方法如下

  1. /**
  2. * 自动获取关键词(调用第三方插件)
  3. * @return [type] [description]
  4. * www.shouce.ren
  5. */
  6. public function keyword()
  7. {
  8. Vendor('autokeyword.AutoKeyword');
  9. $keyword = new \AutoKeyword();
  10. $str='自动获取关键词并发大数据我们大家好吃饭啦调用第三方插件';
  11. $title = trim($str);
  12. $keys=$keyword::discuz($title);
  13. var_dump($keys);
  14. }
复制

插件源码:

AutoKeyword.php

  1. <?php
  2. /**
  3. * 分词
  4. * @author zhao jinhan <326196998@qq.com>
  5. *
  6. */
  7. class AutoKeyword
  8. {
  9. /**
  10. * 使用discuz词库
  11. * @param unknown_type $title
  12. * @param unknown_type $content
  13. */
  14. public static function discuz ($title = '', $content = '')
  15. {
  16. $subjectenc = rawurlencode(strip_tags($title));
  17. $messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $content)));
  18. $data = @implode('', file("http://keyword.discuz.com/related_kw.html?title=$subjectenc&content=$messageenc&ics=utf-8&ocs=utf-8"));
  19. if ($data) {
  20. $parser = xml_parser_create();
  21. xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
  22. xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
  23. xml_parse_into_struct($parser, $data, $values, $index);
  24. xml_parser_free($parser);
  25. $kws = array ();
  26. foreach ($values as $valuearray) {
  27. if ($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw')
  28. $kws[] = trim($valuearray['value']);
  29. }
  30. //             $return = '';
  31. //             $dot='';
  32. //             if ($kws) {
  33. //                 foreach ($kws as $kw) {
  34. //                     $kw = CHtml::encode(strip_tags($kw));
  35. //                     $return .= $dot.$kw ;
  36. //                     $dot = ',';
  37. //                 }
  38. //                 $return = trim($return);
  39. //             }
  40. return $kws;
  41. }
  42. }
  43. /**
  44. * 简易自定义获取关键词
  45. * @param string $title
  46. * @param string $content
  47. * @return JSON
  48. */
  49. public static function simple($title = '', $content=''){
  50. $words = include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'words.php';
  51. $data = array();
  52. $max = 10; //最多匹配10个
  53. if($words){
  54. foreach((array)$words as $word){
  55. if(count($data) > $max){
  56. break;
  57. }else{
  58. if($title && preg_match('/'.$word.'/is', $title)){
  59. array_push($data, $word);
  60. }
  61. if($content && preg_match('/'.$word.'/is', $content)){
  62. if(!in_array($word, $data)){
  63. array_push($data, $word);
  64. }
  65. }
  66. }
  67. }
  68. }
  69. return array_unique($data);
  70. }
  71. }
复制

words.php

  1. <?php
  2. /**
  3. * 词库(权重越高越靠前)
  4. */
  5. return array(
  6. 'php',
  7. 'mysql',
  8. 'web',
  9. 'html',
  10. 'js',
  11. 'jquery',
  12. 'sql',
  13. 'myisam',
  14. 'innodb',
  15. 'apache',
  16. 'nginx',
  17. 'yii',
  18. 'linux',
  19. 'cms',
  20. 'yiifcms',
  21. 'redis',
  22. 'memcache',
  23. 'explain',
  24. 'ueditor',
  25. 'kindeditor',
  26. 'api',
  27. 'w3c',
  28. '高性能',
  29. '大数据',
  30. '存储过程',
  31. '事物',
  32. '触发器',
  33. '索引',
  34. '并发',
  35. '编程',
  36. '算法',
  37. '排序',
  38. '安装包',
  39. '下载',
  40. '服务器',
  41. '手册',
  42. '指南',
  43. '文章',
  44. '图集',
  45. );

ThinkPHP自动获取关键词(调用第三方插件)的更多相关文章

  1. C#的Process类调用第三方插件实现PDF文件转SWF文件

    在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来 ...

  2. phpcms 去掉默认自动获取关键词、自动提取第一张图片?

    进入后台,内容--模型管理--管理模型,选择文章模型的字段管理,选择第13项内容--修改,然后把字段提示代码中的2个checked去掉就行了. <label><input name= ...

  3. Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用

    一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了,它的复杂度远远大于纯粹的应用开发.首先必须要考虑的就是集成第三方SDK,支付这块渠道商已经帮你我们做好了,只需要按照文档对 ...

  4. ThinkPHP第十九天(Ueditor高亮插件、扩展函数载入load、静态缓存)

    1.使用Ueditor编辑器,插入代码后,显示的时候高亮显示,需要调用Ueditor中的第三方插件third-party中的SyntaxHighlighter 调用方法: 引入CSS和JS文件,并调用 ...

  5. Flask框架 (四)—— 请求上下文源码分析、g对象、第三方插件(flask_session、flask_script、wtforms)、信号

    Flask框架 (四)—— 请求上下文源码分析.g对象.第三方插件(flask_session.flask_script.wtforms).信号 目录 请求上下文源码分析.g对象.第三方插件(flas ...

  6. WebService学习总结(四)——调用第三方提供的webService服务

    http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...

  7. Cordova webapp实战开发:(6)如何写一个iOS下获取APP版本号的插件?

    上一篇我们学习了如何写一个Andorid下自动更新的插件,我想还有一部分看本系列blog的开发人员希望学习在iOS下如何做插件的吧,那么今天你就可以来看看这篇文字了. 本次练习你能学到的 学习如何获取 ...

  8. <转>thinkphp自动验证无效的问题

    新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds ...

  9. C# 调用第三方DLL完整实例

    C# 调用第三方DLL完整实例 分类: C/C++ 以下代码为本人在实际项目中编写的调用第三方DLL接口程序的完整代码. public class ExecuteDLL : Form { ...//忽 ...

随机推荐

  1. linux实践——内核编程 基础模块

    一.内核模块的概念 Linux模块(module)是一些可以作为独立程序来编译的函数和数据类型的集合.内核模块给我们带来的便利是模块本身并不被编译进内核文件,可在内核运行期间动态的安装或卸载.因为如果 ...

  2. 20145312 GDB调试汇编堆栈过程分析

    20145312 GDB调试汇编堆栈过程分析 参考资料 卢肖明同学的博客:<GDB调试汇编堆栈过程分析>: http://www.cnblogs.com/lxm20145215----/p ...

  3. HoloLens开发手记 - Unity之Gaze凝视射线

    凝视是HoloLens首要输入方式,形式功能类似于桌面系统的光标,用于选择操作全息对象.然而在Unity中并没有明确的Gaze API或者组件. 实现Gaze Implementing Gaze 概念 ...

  4. 《android基于andFix的热修复方案》实战篇

    有篇文章说的比较简洁,大家可以参考下:AndFix使用说明 下面说说实际使用中遇到的问题 1:如何继承到gradle项目中 dependencies { compile 'com.alipay.eul ...

  5. So... what's up?

    So... testing markdown editor what to learn in May? html5 canvas api codeigniter framework var test ...

  6. C#Json序列化和反序列化

    1.动态决定数据是否要序列化 我的需求是这样的,我用了一款数据库的组件叫Dos.ORM,确实方便了不少,但是在用的时候,我发现一个问题,比如我定义的表中有一个字段添加时间,修改时间,这些都是默认的,在 ...

  7. 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

    当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问 ...

  8. JAVA 注解的几大作用及使用方法详解【转】

    java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...

  9. 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置

    图片太多,具体过程参照: [OpenCV入门教程之一] 安装OpenCV:OpenCV 3.0.OpenCV 2.4.8.OpenCV 2.4.9 +VS 开发环境配置 说下我这边的设置: 选择deb ...

  10. java的RMI(Remote Method Invocation)

    RMI 相关知识RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络 ...