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 { ...//忽 ...
随机推荐
- linux实践——内核编程 基础模块
一.内核模块的概念 Linux模块(module)是一些可以作为独立程序来编译的函数和数据类型的集合.内核模块给我们带来的便利是模块本身并不被编译进内核文件,可在内核运行期间动态的安装或卸载.因为如果 ...
- 20145312 GDB调试汇编堆栈过程分析
20145312 GDB调试汇编堆栈过程分析 参考资料 卢肖明同学的博客:<GDB调试汇编堆栈过程分析>: http://www.cnblogs.com/lxm20145215----/p ...
- HoloLens开发手记 - Unity之Gaze凝视射线
凝视是HoloLens首要输入方式,形式功能类似于桌面系统的光标,用于选择操作全息对象.然而在Unity中并没有明确的Gaze API或者组件. 实现Gaze Implementing Gaze 概念 ...
- 《android基于andFix的热修复方案》实战篇
有篇文章说的比较简洁,大家可以参考下:AndFix使用说明 下面说说实际使用中遇到的问题 1:如何继承到gradle项目中 dependencies { compile 'com.alipay.eul ...
- So... what's up?
So... testing markdown editor what to learn in May? html5 canvas api codeigniter framework var test ...
- C#Json序列化和反序列化
1.动态决定数据是否要序列化 我的需求是这样的,我用了一款数据库的组件叫Dos.ORM,确实方便了不少,但是在用的时候,我发现一个问题,比如我定义的表中有一个字段添加时间,修改时间,这些都是默认的,在 ...
- 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问 ...
- JAVA 注解的几大作用及使用方法详解【转】
java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...
- 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置
图片太多,具体过程参照: [OpenCV入门教程之一] 安装OpenCV:OpenCV 3.0.OpenCV 2.4.8.OpenCV 2.4.9 +VS 开发环境配置 说下我这边的设置: 选择deb ...
- java的RMI(Remote Method Invocation)
RMI 相关知识RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络 ...