ThinkPHP自动获取关键词调用在线discuz词库

先按照下图路径放好插件

        /**
* 自动获取关键词(调用第三方插件)
* @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扩展之自动分词获取关键字的更多相关文章

  1. JMeter 扩展JMeter插件获取更多监听器

    扩展Jmeter插件获取更多监听器 by:授客 QQ:1033553122 为了获取更多监听器,方便的监控系统及应用,有必要安装第三方插件. 插件下载地址: https://jmeter-plugin ...

  2. easyui tree扩展tree方法获取目标节点的一级子节点

    Easyui tree扩展tree方法获取目标节点的一级子节点 /* 只返回目标节点的第一级子节点,具体的用法和getChildren方法是一样的 */ $.extend($.fn.tree.meth ...

  3. C#枚举扩展方法,获取枚举值的描述值以及获取一个枚举类下面所有的元素

    /// <summary> /// 枚举扩展方法 /// </summary> public static class EnumExtension { private stat ...

  4. ThinkPHP3.2.3扩展之生成PDF文件(MPDF)

    目前是PHP生成PDF文件最好的插件了,今天介绍下在ThinkPHP3.2.3里如何使用. 先安照路径放好如图. 下面是使用方法 public function pdf(){ //引入类库 Vendo ...

  5. ThinkPHP3.2 行为扩展以及插件机制介绍!

    首先行为扩展这个概念是TP架构的核心组成之一,关于行为的解释我就粗略的概括一下吧:TP在从接受到HTTP请求到最终将视图输出,期间经历的很多步骤,这些步骤大家可以在http://document.th ...

  6. Chome——扩展程序,获取更多扩展程序报错

    修改/替换hosts文件 地址:c:/windows/system32/drivers/etc hosts:可从网上搜索下载或网盘下载(链接: http://pan.baidu.com/s/1bpu6 ...

  7. 扩展1 - Python 获取当前时间的用法

    1.先导入库:import datetime 2.获取当前日期和时间:now_time = datetime.datetime.now() 3.格式化成我们想要的日期:strftime() 比如:“2 ...

  8. WebAPI的AuthorizeAttribute扩展类中获取POST提交的数据

    在WEBAPI中,AuthorizeAttribute类重写时,如何获取post数据是个难题,网上找资料也不好使,只能自己研究,通过研究发现,WEBAPI给了我们获取POST数据的可能,下面介绍一下: ...

  9. C#.NET为List加入扩展方法:获取唯一值

    public static class ListTools { /// <summary> /// 获取唯一值列表 /// </summary> /// <param n ...

随机推荐

  1. forcedirectories和CreateDirectory

    forcedirectories和CreateDirectory都能创建文件ForceDirectories可以创建多层目录. 如果你创建一个目录为c:\mymusic\music 如果你的C盘不存在 ...

  2. How To:配置Linux iSCSI客户端

    1.安装客户端 [root@node01 Packages]# rpm -Uvh iscsi-initiator-utils-6.2.0.873-2.el6.x86_64.rpm warning: i ...

  3. Sending Secret Messages LightOJ - 1404

    Sending Secret Messages LightOJ - 1404 Alice wants to send Bob some confidential messages. But their ...

  4. docker安装kong和kong-dashboard

    1:docker安装遵循官方手册 2:安装kong 参考文档:https://getkong.org/install/docker/ 安装过程基本和文档一致,文档十分简单清晰. 但应注意,为了最新版k ...

  5. [cogs729] [网络流24题#5] 圆桌聚餐 [网络流,最大流,多重二分图匹配]

    建图:从源点向单位连边,边权为单位人数,从单位向圆桌连边,边权为1,从圆桌向汇点连边,边权为圆桌容量. #include <iostream> #include <algorithm ...

  6. windows 2013(codevs 1695)

    题目描述 Description 话说adamyi编的Windows 2013超时了(- -!),所以他不得不在自己家门口亲眼见证这个电影般的场景.虽然他不想错过这个美妙的时刻,但是他的肚子一再抗议, ...

  7. 【DEBUG】不能将参数 1 从“CString”转换为“const char *”

    1.  在vc6.0下用CString str;num = atoi(str);就可以顺利取到num: 但是同样代码拿到vs2008就报错,error C2664: "atoi": ...

  8. 用c实现shell排序

    shell排序的方法又称缩小增量法,是对直接插入排序法的改进.至于对于分组后采用哪种排序方法实现,本例采用直接选择排序和直接插入排序,理论上讲,通过分组排序后,数据基本上有序,这时通过直接插入排序会比 ...

  9. [转]十五天精通WCF——第二天 告别烦恼的config配置

    经常搞wcf的基友们肯定会知道,当你的应用程序有很多的“服务引用”的时候,是不是有一种疯狂的感觉...从一个环境迁移到另外一个环境,你需要改变的 endpoint会超级tmd的多,简直就是搞死了人.. ...

  10. post and get

    POST和GET是Web编程中的两个术语,他们是通过URI访问resource的两种方式.简单的说, GET 是把要访问的资源嵌入在URI中. 假设你在一个页面 http://www.myphone. ...