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. 利用JS跨域做一个简单的页面访问统计系统

    其实在大部分互联网web产品中,我们通常会用百度统计或者谷歌统计分析系统,通过在程序中引入特定的JS脚本,然后便可以在这些统计系统中看到自己网站页面具体的访问情况.但是有些时候,由于一些特殊情况,我们 ...

  2. .NET Core手记 - Json.NET的使用

    Json.NET大家很熟悉了,很流行的高性能Json库,很棒的是Json.NET也支持了.NET Standard框架,也就意味着我们可以在.NET Core项目里使用了. 创建一个.NET Core ...

  3. jQuery应用之(一)使用jQuery选择器(荐)

    如上文(地址)jQuery预先的javascript的编程,提供了计划所有css3下的标准选择器,开发者可以利用这些选择器轻松选择各种元素,供javascript使用. 重要的是jQuery对这些选择 ...

  4. struts的上传和下载

    上传: jsp: <body> <h1>filogin</h1> <!--如果表单中有文件文件控件,上传的编码必须是multipart/form-data - ...

  5. 在VS2012中编译WinXP兼容的程序

    VS2012默认是不兼容Windows XP的,编译链接出来的程序只能在Windows Vista及以上版本的操作系统上运行.可是有时需要在Windows XP上运行,又不得不用VS2012(例如用了 ...

  6. structs环境搭建

    (1)<s:fielderror />放在JSP中,如果没在web.xml中配置filter相关内容,会有The Struts dispatcher cannot be found.从而显 ...

  7. Android中的Uri.parse()

    1,调web浏览器 Uri myBlogUri = Uri.parse("http://www.baidu.com"); returnIt = new Intent(Intent. ...

  8. Informatica 错误:Cannot convert from SQL type 93 to C type 4

    经验和积累蛮重要!向大神学习! ---------------------------------------------------------------------- Mapping: 在sou ...

  9. 萤火虫算法-python实现

    FAIndividual.py import numpy as np import ObjFunction class FAIndividual: ''' individual of firefly ...

  10. IRP IO_STACK_LOCATION 《寒江独钓》内核学习笔记(1)

    在学习内核过滤驱动的过程中,遇到了大量的涉及IRP操作的代码,这里有必要对IRP的数据结构和与之相关的API函数做一下笔记. 1. 相关阅读资料 <深入解析 windows 操作系统(第4版,中 ...