ThinkPHP3.2.3扩展之自动分词获取关键字
先按照下图路径放好插件

/**
* 自动获取关键词(调用第三方插件)
* @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);
} }
word.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',
'高性能',
'大数据',
'存储过程',
'事物',
'触发器',
'索引',
'并发',
'编程',
'算法',
'排序',
'安装包',
'下载',
'服务器',
'手册',
'指南',
'文章',
'图集',
);
ThinkPHP3.2.3扩展之自动分词获取关键字的更多相关文章
- JMeter 扩展JMeter插件获取更多监听器
扩展Jmeter插件获取更多监听器 by:授客 QQ:1033553122 为了获取更多监听器,方便的监控系统及应用,有必要安装第三方插件. 插件下载地址: https://jmeter-plugin ...
- easyui tree扩展tree方法获取目标节点的一级子节点
Easyui tree扩展tree方法获取目标节点的一级子节点 /* 只返回目标节点的第一级子节点,具体的用法和getChildren方法是一样的 */ $.extend($.fn.tree.meth ...
- C#枚举扩展方法,获取枚举值的描述值以及获取一个枚举类下面所有的元素
/// <summary> /// 枚举扩展方法 /// </summary> public static class EnumExtension { private stat ...
- ThinkPHP3.2.3扩展之生成PDF文件(MPDF)
目前是PHP生成PDF文件最好的插件了,今天介绍下在ThinkPHP3.2.3里如何使用. 先安照路径放好如图. 下面是使用方法 public function pdf(){ //引入类库 Vendo ...
- ThinkPHP3.2 行为扩展以及插件机制介绍!
首先行为扩展这个概念是TP架构的核心组成之一,关于行为的解释我就粗略的概括一下吧:TP在从接受到HTTP请求到最终将视图输出,期间经历的很多步骤,这些步骤大家可以在http://document.th ...
- Chome——扩展程序,获取更多扩展程序报错
修改/替换hosts文件 地址:c:/windows/system32/drivers/etc hosts:可从网上搜索下载或网盘下载(链接: http://pan.baidu.com/s/1bpu6 ...
- 扩展1 - Python 获取当前时间的用法
1.先导入库:import datetime 2.获取当前日期和时间:now_time = datetime.datetime.now() 3.格式化成我们想要的日期:strftime() 比如:“2 ...
- WebAPI的AuthorizeAttribute扩展类中获取POST提交的数据
在WEBAPI中,AuthorizeAttribute类重写时,如何获取post数据是个难题,网上找资料也不好使,只能自己研究,通过研究发现,WEBAPI给了我们获取POST数据的可能,下面介绍一下: ...
- C#.NET为List加入扩展方法:获取唯一值
public static class ListTools { /// <summary> /// 获取唯一值列表 /// </summary> /// <param n ...
随机推荐
- js post一个对象 在C#中怎么接收? 未解决
这个在C#中怎么接收?
- 数据库操作(二)SOQL
1.SOQL SOQL是对象查询语言.它可以在单个sObject中在给定标准上搜索记录. 2.SELECT语句 [格式]SELECT 列名称 FROM 表名称 [示例] 3.SELECT...WHER ...
- 爬虫之cookie
什么是cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第一次登 ...
- node版本管理工具nvm安装使用教程
一些安装包依赖一定的node版本,可以采用nvm管理node, 可以快速的进行版本切换. 操作系统: windows10, x64 常见版本工具: 1. nvmw, nvmm install node ...
- 洛谷——P3205 [HNOI2010]合唱队
P3205 [HNOI2010]合唱队 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为 ...
- POJ-2135-Farm Tour(最大费用最小流)模板
Farm Tour POJ - 2135 When FJ's friends visit him on the farm, he likes to show them around. His farm ...
- 【Codeforces 446A】DZY Loves Sequences
[链接] 我是链接,点我呀:) [题意] 让你找一段连续的区间 使得这一段区间最多修改一个数字就能变成严格上升的区间. 问你这个区间的最长长度 [题解] dp[0][i]表示以i为结尾的最长严格上升长 ...
- 【[Offer收割]编程练习赛13 D】骑士游历(矩阵模板,乘法,加法,乘方)
[题目链接]:http://hihocoder.com/problemset/problem/1504 [题意] [题解] 可以把二维的坐标转成成一维的; 即(x,y)->(x-1)*8+y 然 ...
- bupt summer training for 16 #1 ——简单题目
D.What a Mess 给n个数,求其中能满足 a[i] % a[j] == 0 的数对之和 n = 1W,max_ai = 100W 不是很大,所以就直接筛就可以了 计算可得最高复杂度 < ...
- 敏捷开发系列学习总结(5)——这几招搞定团队协同Coding
一个团队在一起Coding时,就怕发生这样的事情:同1个文件你改了,我也改了,他也改了,最后怎么同步呢?以前用clearcase时,A把文件checkout了,其他人就不能提交,保证了代码的唯一性.但 ...