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. [CareerCup] 14.6 CircularArray 环形数组

    14.6 Implement a CircularArray class that supports an array-like data structure which can be efficie ...

  2. UIButton利用分类扩展方法(封装)

    UIButton+BackgroundColor.h #import <UIKit/UIKit.h> @interface UIButton (BackgroundColor) - (vo ...

  3. openwrt u-boot_mod 代码分析

    u-boot_mod 是具有web 浏览器的uboot,也就是传说中的不死uboot,这里的不死指的是不管怎么刷firmware 都可以方便更换firmware,而不是uboot本身就是不死的. 这里 ...

  4. i春秋——春秋争霸write up

    i春秋--春秋争霸write up 第一关 题目给出一张图 提示中,这种排列源于古老的奇书,暗含了两个数字,可以得出第一关的答案是两个数字 百度识图来一发, 得到图中排列是来自于洛书,点开洛书的百度百 ...

  5. MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下)

    文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part2.html 上一节 ...

  6. 3.SQLAlchemy文档-SQLAlchemy Core(中文版)

    这里的文描述了关于SQLAlchemy的的SQL渲染引擎的相关内容,包括数据库API的集成,事务的集成和数据架构描述服务.与以领域为中心的ORM使用模式相反,SQL表达式语言提供了一个数据构架为中心的 ...

  7. sql server 数据库备份,完整备份,差异备份,自动备份说明

    Sql server 设置完整备份,差异备份说明 在数据库管理器中,选择要备份的数据库,右键找到“备份” 然后可以按照备份的方式进行备份. 关于文件的还原,作以下补充说明: 步骤为: 1.在需要还原的 ...

  8. HTML5——多次定位请求

    多次定位请求及点击一次 就不断的触发请求事件,和单次定位请求写法差不多,只需要将 navigator.geolocation.getCurrentPosition改为navigator.geoloca ...

  9. popupwindow与软键盘的问题

    1.软键盘弹出时不会改变布局(覆盖页面的效果)android:windowSoftInputMode="adjustPan" 2.软键盘弹出时不会覆盖popuwindowsetSo ...

  10. hdu1950 最长上升子序列nlogn

    简单. #include<cstdio> #include<cstring> #include<iostream> using namespace std; ; i ...