ThinkPHP自动获取关键词(调用第三方插件)
先按照下图路径放好插件

方法如下
- /**
- * 自动获取关键词(调用第三方插件)
- * @return [type] [description]
- * www.shouce.ren
- */
- public function keyword()
- {
- Vendor('autokeyword.AutoKeyword');
- $keyword = new \AutoKeyword();
- $str='自动获取关键词并发大数据我们大家好吃饭啦调用第三方插件';
- $title = trim($str);
- $keys=$keyword::discuz($title);
- var_dump($keys);
- }
插件源码:
AutoKeyword.php
- <?php
- /**
- * 分词
- * @author zhao jinhan <326196998@qq.com>
- *
- */
- class AutoKeyword
- {
- /**
- * 使用discuz词库
- * @param unknown_type $title
- * @param unknown_type $content
- */
- public static function discuz ($title = '', $content = '')
- {
- $subjectenc = rawurlencode(strip_tags($title));
- $messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $content)));
- $data = @implode('', file("http://keyword.discuz.com/related_kw.html?title=$subjectenc&content=$messageenc&ics=utf-8&ocs=utf-8"));
- if ($data) {
- $parser = xml_parser_create();
- xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
- xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
- xml_parse_into_struct($parser, $data, $values, $index);
- xml_parser_free($parser);
- $kws = array ();
- foreach ($values as $valuearray) {
- if ($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw')
- $kws[] = trim($valuearray['value']);
- }
- // $return = '';
- // $dot='';
- // if ($kws) {
- // foreach ($kws as $kw) {
- // $kw = CHtml::encode(strip_tags($kw));
- // $return .= $dot.$kw ;
- // $dot = ',';
- // }
- // $return = trim($return);
- // }
- return $kws;
- }
- }
- /**
- * 简易自定义获取关键词
- * @param string $title
- * @param string $content
- * @return JSON
- */
- public static function simple($title = '', $content=''){
- $words = include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'words.php';
- $data = array();
- $max = 10; //最多匹配10个
- if($words){
- foreach((array)$words as $word){
- if(count($data) > $max){
- break;
- }else{
- if($title && preg_match('/'.$word.'/is', $title)){
- array_push($data, $word);
- }
- if($content && preg_match('/'.$word.'/is', $content)){
- if(!in_array($word, $data)){
- array_push($data, $word);
- }
- }
- }
- }
- }
- return array_unique($data);
- }
- }
words.php
- <?php
- /**
- * 词库(权重越高越靠前)
- */
- return array(
- 'php',
- 'mysql',
- 'web',
- 'html',
- 'js',
- 'jquery',
- 'sql',
- 'myisam',
- 'innodb',
- 'apache',
- 'nginx',
- 'yii',
- 'linux',
- 'cms',
- 'yiifcms',
- 'redis',
- 'memcache',
- 'explain',
- 'ueditor',
- 'kindeditor',
- 'api',
- 'w3c',
- '高性能',
- '大数据',
- '存储过程',
- '事物',
- '触发器',
- '索引',
- '并发',
- '编程',
- '算法',
- '排序',
- '安装包',
- '下载',
- '服务器',
- '手册',
- '指南',
- '文章',
- '图集',
- );
ThinkPHP自动获取关键词(调用第三方插件)的更多相关文章
- C#的Process类调用第三方插件实现PDF文件转SWF文件
在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来 ...
- phpcms 去掉默认自动获取关键词、自动提取第一张图片?
进入后台,内容--模型管理--管理模型,选择文章模型的字段管理,选择第13项内容--修改,然后把字段提示代码中的2个checked去掉就行了. <label><input name= ...
- Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用
一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了,它的复杂度远远大于纯粹的应用开发.首先必须要考虑的就是集成第三方SDK,支付这块渠道商已经帮你我们做好了,只需要按照文档对 ...
- ThinkPHP第十九天(Ueditor高亮插件、扩展函数载入load、静态缓存)
1.使用Ueditor编辑器,插入代码后,显示的时候高亮显示,需要调用Ueditor中的第三方插件third-party中的SyntaxHighlighter 调用方法: 引入CSS和JS文件,并调用 ...
- Flask框架 (四)—— 请求上下文源码分析、g对象、第三方插件(flask_session、flask_script、wtforms)、信号
Flask框架 (四)—— 请求上下文源码分析.g对象.第三方插件(flask_session.flask_script.wtforms).信号 目录 请求上下文源码分析.g对象.第三方插件(flas ...
- WebService学习总结(四)——调用第三方提供的webService服务
http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...
- Cordova webapp实战开发:(6)如何写一个iOS下获取APP版本号的插件?
上一篇我们学习了如何写一个Andorid下自动更新的插件,我想还有一部分看本系列blog的开发人员希望学习在iOS下如何做插件的吧,那么今天你就可以来看看这篇文字了. 本次练习你能学到的 学习如何获取 ...
- <转>thinkphp自动验证无效的问题
新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds ...
- C# 调用第三方DLL完整实例
C# 调用第三方DLL完整实例 分类: C/C++ 以下代码为本人在实际项目中编写的调用第三方DLL接口程序的完整代码. public class ExecuteDLL : Form { ...//忽 ...
随机推荐
- 20135208 20135212 LINUX第一次实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级: 201352 姓名:池彬宁 贺邦 学号:2013521 ...
- .NET Web开发初学者必知的四个网站
No.1 W3school 链接: http://www.w3school.com.cn/ 预览: 介绍: 全球最大Web前端技术教程网站.内容涵盖从基础的 HTML 到 CSS到进阶的XML.SQL ...
- [C++基础]一个比较常用的配置文件/初始化文件读取程序
在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip ...
- lei
upstream pap_backend_conf { keepalive 128; server 127.0.0.1:9221 max_fails=2 fail_timeout=5 weight=1 ...
- jquery基本方法
jquery的delay sleep 与js的setTime的区别. delay 和sleep推荐不要用,太难用了. click on live delegate bind http://www.jb ...
- 第三十三课:jQuery Deferred详解1
之前我们讲了Mochikit Deferred,JSDeferred,现在讲jQuery Deferred.首先,我们先来讲下他们的区别: 在保存回调函数时,Mochikit Deferred(doj ...
- web前端开发教程系列-1 - 前端开发编辑器介绍
目录: 前言 一. Webstorm 1. 优点 2. 缺点 3. 教程 4. 插件 5. 技巧 二. SublimeText 1. 优点 2. 缺点 3. 教程 4. 插件 5. 技巧 前言 由于很 ...
- ios-遍历和排序
// // main.m // OC-遍历和排序-homework // // Created by dllo on 16/2/25. // Copyright © 2016年 dllo. All r ...
- 搭建andiord sdk和安装eclipse adt插件的个人小体会
由于以前就已经搭建好了java jdk的运行环境这里就不多说了,不过这几天看了一篇博客才明白jdk变量环境设置的某些要义,不在是人云亦云而不知其所以然. 其博客的地址:http://www.cnblo ...
- JSON.NET 简单的使用
JSON.NET(http://json.codeplex.com/)使用来将.NET中的对象转换为JSON字符串(序列化?),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?) 首先为 ...