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 { ...//忽 ...
随机推荐
- mysql5.7.12直接解压zip包,安装过程
MySQL-5.7.12-winx64.zip解压安装方式 1.解压文件到你想要安装的位置. 本人是直接解压到E盘. 2.配置环境变量,在path中放入:E:\mysql-5.7.12-win ...
- 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计
学习了MPI四种通信模式 及其函数用法: (1)标准通信模式:MPI_SEND (2)缓存通信模式:MPI_BSEND (3)同步通信模式:MPI_SSEND (4)就绪通信模式:MPI_RSEND ...
- 《1024伐木累》-te别篇,庭审你知道吗?
思前想后,我觉得不应该发这一期,因为,做完这一期之后突然发觉,自己失去了主题,到底是在讽刺?还是在讽刺?还是在讽刺呢?不论是什么,大家自己判断吧.就当作者不想发表自己的观点,先看这一期的对白吧! 1. ...
- DOM(四)事件流
1.冒泡型事件 浏览器的事件模型分两种:捕获型事件和冒泡型事件.由于ie不支持捕获型事件,所以以下主要以冒泡型事件作为讲解.(dubbed bubbling)冒泡型指事件安装最特定的事件到最不特定的事 ...
- Javascript继承机制的设计
写软工作业时各种蛋疼:主要在于Javascript没有“子类”“父类”“接口”的概念,只能使用prototype来实现,看了下面一篇文章,感觉写得很不错~ http://www.ruanyifeng. ...
- winform之判断验证码,,附加验证码的一般处理程序
这里用的一般处理程序画的验证码图片. 判断验证码步骤: ①先在一般处理程序中获取验证码(一般处理程序中session的调用→context.Session[]) string code = GetRn ...
- BACKBONE源代码解析
//2014.11// Backbone.js 1.0.0 // (c) 2010-2013 Jeremy Ashkenas, DocumentCloud Inc. // Backbone may b ...
- Ajax、反向Ajax和WebSocket 概念
Ajax 异步的JavaScript和XML(Asynchronous JavaScript and XML,Ajax),一种可通过JavaScript来访问的浏览器功能特性,其允许脚本向幕后的网站发 ...
- 关于MyEclipse对Struts2配置文件较检异常 Invalid result location value/parameter
有时候Struts.xml配置没有错误,完全可以顺利运行,而MyEclipse9以上版本却经常出现一大坨错误标识,错误信息是 Invalid result location value/paramet ...
- CVE-2014-6321 && MS14-066 Microsoft Schannel Remote Code Execution Vulnerability Analysis
目录 . 漏洞的起因 . 漏洞原理分析 . 漏洞的影响范围 . 漏洞的利用场景 . 漏洞的POC.测试方法 . 漏洞的修复Patch情况 . 如何避免此类漏洞继续出现 1. 漏洞的起因 这次的CVE和 ...