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. 学习笔记:Twitter核心数据类库团队的Hadoop优化经验

    一.来源 Streaming Hadoop Performance Optimization at Scale, Lessons Learned at Twitter (Data platform @ ...

  2. js验证身份证号

    /* * 身份证检测(格式.地区.生日.年龄范围) * code:检测字符串 rangeAge:年龄范围[格式为:25-55] * 返回值 0:为空 ,不为0则验证不通过 */ : : : : : : ...

  3. Javascript基础系列之(八)Javascript的调试与优化

    Javascript的错误主要是语法错误和运行时的错误,前者在代码解析时就会出错,影响程序的运行.后者称为异常,影响它所运行的线程.下面就Javascript常见错误进行分析 1.常见的错误和异常 i ...

  4. DOM(七)使用DOM控制表格

    表格的css控制就先不说了,首先分享下表格常用的DOM 表格添加操作的方法常用的为insertRow()和insertCell()方法. row是从零开始计算起的,例如: var oTr = docu ...

  5. words in view Moqui resource code

    annotation:注释 注解 documentation:文件  证明文件 embed:嵌入 context:环境  上下文 explicity: 明确的 明白的 conversion: 转化

  6. jQuery Mobile学习日记

    本次主讲人是王思伦啦啦啦~ 框架特性 jQuery Mobile 以“Write Less, Do More”作为目标,为所有的主流移动操作系统平台提供了高度统一的 UI 框架:jQuery 的移动框 ...

  7. eclipse中安装svn插件

    Eclipse安装SVN 1.help->Install New Software2.Work With,点击add      name:subclipse      url:http://su ...

  8. 使用Git进行代码管理心得

    关于使用Git for Windows来clone和上传项目 首先到Git for Windows的官网下载并安装 在本地用来保存clone文件的文件夹右键,选择Git Bash Here: 在打开的 ...

  9. Qt无边框,可移动窗口

    QPoint dragPosition; void MainWindow::mousePressEvent(QMouseEvent *event) { if(event->button()==Q ...

  10. 遍历HashMap的四种方法

    public static void main(String[] args) { Map<String,String> map=new HashMap<String,String&g ...