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. Swift 3到5.1新特性整理

    本文转载自:https://hicc.me/whats-new-in-swift-3-to-5-1/,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有. Hipo 2.0 重写从 Swif ...

  2. 小白年薪24万,为什么Linux运维工程师薪资这么高?

    借了云计算的东风,Linux岗位这几年是越来越火,特别是Linux云计算运维工程师,如今早已成为互联网的核心岗位之一,薪资待遇飞快的上涨. 作为一个细分的专业岗位,Linux云计算工程师由于其入门学习 ...

  3. 6.shell脚本

    6.1 shell基础语法 6.1.1 shell的概述 shell的基本概念 1.什么是shell shell是用户和Linux操作系统之间的接口,它提供了与操作系统之间的通讯方式 shell是一个 ...

  4. php第十九节课

    JQUERY <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  5. js 阻止冒泡事件和默认事件

    阻止事件冒泡 window.enent ? window.enent.cancelBubble = true : e.stopPropagation() function stopBubble(eve ...

  6. HTML学习笔记之标签基础

    目录 1.基本标签 2.链接 3.图像 4.表格 5.列表 6.块与布局 1.基本标签 (1)标题与段落 标签 <h1> ~ <h6> 分别用于定义一至六级标题,标签 < ...

  7. 11.best fields策略(dis_max参数设置)

    主要知识点 常规multi-field搜索结果分析 dis_max参数设置     一.为帖子数据增加content字段     POST /forum/article/_bulk { "u ...

  8. hdu 4786 最小生成树与最大生成树

    /* 题意 :有一些边权值为1和0,判断是否存在一个生成树使得他的总权值为一个斐波那契数. 解法:建立一个最小生成树向里面加权值为1的边替换为0的边,保证原来的联通.因为权值为1,可直接求出最大生成树 ...

  9. CODEVS1533 Fibonacci数列 (矩阵乘法)

    嗯,,,矩阵乘法最基础的题了. Program CODEVS1250; ..,..] of longint; var T,n,mo:longint; a,b:arr; operator *(a,b:a ...

  10. nyoj_66_分数拆分_201312012122

    分数拆分 时间限制:3000 ms  |           内存限制:65535 KB 难度:1   描述 现在输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y.   输 ...