修改自DEDECMS的自动关键字获取
看有人需要就放出来了, 文件下载在3楼,如果直接替换的话,请按照11楼将enews.php进行下修改,不然分割符就不是帝国需要的逗号而是空格了,(感谢hs999的反馈),请到24楼下载!
增加了2个文件(admin/Keyword/dede_wwwdic.csv,admin/Keyword/pub_splitword_),
修改了1个文件 (admin/enews.php)
修改步骤如下:
打开 enews.php 找到 79行 //增加信息 至 //修改信息
用以下内容替换
elseif($enews=="AddNews")
{
//修改开始
/*******************************
//织梦分词算法
//带词性标志的算法,使用方法:
//普通分词 tryNumName,识别数量词及人名,$tryDiff 岐义处理
//$strok = $sp->SplitRMM(string $str,bool $tryNumName,bool $tryDiff)
//在DedeCms内使用的词典是从热门词中选出来的词典,不适用于通用的分词算法
//本算法经过简化处理,取消了部份消岐规则
********************************/
require_once(dirname(__FILE__)."../Keyword/pub_splitword_");
//获得HTML里的文本
function SpHtml2Text($str){
$str = preg_replace("/<sty(.*)\\/style>|<scr(.*)\\/script>|<!--(.*)-->/isU","",$str);
$alltext = "";
$start = 1;
for($i=0;$i<strlen($str);$i++){
if($start==0 && $str[$i]==">") $start = 1;
else if($start==1){
if($str[$i]=="<"){ $start = 0; $alltext .= " "; }
else if(ord($str[$i])>31) $alltext .= $str[$i];
}
}
$alltext = str_replace(" "," ",$alltext);
$alltext = preg_replace("/&([^;&]*)(;|&)/","",$alltext);
$alltext = preg_replace("/[ ]+/s"," ",$alltext);
return $alltext;
}
//获取关键词
function GetKeywords($title,$body){
$keywords = "";
$sp = new SplitWord();
$titleindexs = explode(" ",trim($sp->GetIndexText($sp->SplitRMM($title))));
$allindexs = explode(" ",trim($sp->GetIndexText($sp->SplitRMM(spHtml2Text($body)),200)));
if(is_array($allindexs) && is_array($titleindexs)){
foreach($titleindexs as $k){
if(strlen($keywords)>=50) break;
else $keywords .= $k.",";
}
foreach($allindexs as $k){
if(strlen($keywords)>=50) break;
else if(!in_array($k,$titleindexs)) $keywords .= $k.",";
}
}
$sp->Clear();
unset($sp);
$keywords = preg_replace("/