dedecms关键词维护里面字数多的词优先字数少的词的解决办法

织梦后台的关键词维护默认的情况是字数少的词优先于字数多的词,比如我们有两个这样的词:创业、创业方向,第二个词包含了第一个词,在文章中如果出现“创业方向”这个词,默认情况下只会给创业两个字添加关键词超链接,而不是整个词,那么我们怎么样才能实现字数多的词优先于字数少的词呢?下面就告诉大家具体的解决方法:

我们找到并打开/include/arc.archives.class.php文件,在里面找到如下代码:

01 function ReplaceKeyword($kw,&$body)
02     {
03         global $cfg_cmspath;
04         $maxkey = 5;
05         $kws = explode(",",trim($kw));    //以分好为间隔符
06         $i=0;
07         $karr = $kaarr = $GLOBALS[‘replaced‘] = array();
08  
09         //暂时屏蔽超链接
10         $body = preg_replace("#(<a(.*))(>)(.*)(<)(\/a>)#isU"‘\\1-]-\\4-[-\\6‘, $body);
11  
12         /*
13         foreach($kws as $k)
14         {
15             $k = trim($k);
16             if($k!="")
17             {
18                 if($i > $maxkey)
19                 {
20                     break;
21                 }
22                 $myrow = $this->dsql->GetOne("SELECT * FROM #【分隔符】@__keywords WHERE keyword=‘$k‘ AND rpurl<>‘‘ ");
23                 if(is_array($myrow))
24                 {
25                     $karr[] = $k;
26                     $GLOBALS[‘replaced‘][$k] = 0;
27                     $kaarr[] = "<a href=‘{$myrow[‘rpurl‘]}‘><u>$k</u></a>";
28                 }
29                 $i++;
30             }
31         }
32         */
33         $query = "SELECT * FROM #【分隔符】@__keywords WHERE rpurl<>‘‘ ORDER BY rank DESC";
34         $this->dsql->SetQuery($query);
35         $this->dsql->Execute();
36         while($row = $this->dsql->GetArray())
37         {
38             $key = trim($row[‘keyword‘]);
39             $key_url=trim($row[‘rpurl‘]);
40             $karr[] = $key;
41             $kaarr[] = "<a href=‘$key_url‘ target=‘_blank‘><u>$key</u></a>";
42         }
43  
44         // 这里可能会有错误
45         $body = @preg_replace("#(^|>)([^<]+)(?=<|$)#sUe","_highlight(‘\\2‘, \$karr, \$kaarr, ‘\\1‘)", $body);
46  
47         //恢复超链接
48         $body = preg_replace("#(<a(.*))-\]-(.*)-\[-(\/a>)#isU",‘\\1>\\3<\\4‘, $body);
49         return $body;
50     }

注意查找代码的时候先手动去掉代码里面的【分隔符】字样!

找到后将其替换为如下代码:

01     function ReplaceKeyword($kw,&$body)
02     {
03     global $cfg_cmspath,$dsql;
04     $maxkey = 5;
05     $kws = explode(",",trim($kw)); //以分好为间隔符
06     $i=0;
07     $karr = $kaarr = $GLOBALS[‘replaced‘] = array();
08     //暂时屏蔽超链接
09     $body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU"‘\\1-]-\\4-[-\\6‘, $body);
10     $query="SELECT * FROM #【分隔符】@__keywords WHERE rpurl<>‘‘ and sta=1 ORDER BY length(keyword)desc";
11     $dsql->SetQuery($query);
12     $dsql->Execute();
13     while($row = $dsql->GetArray())
14     {
15     $key = trim($row[‘keyword‘]);
16     $key_url=trim($row[‘rpurl‘]);
17     $karr[] = $key;
18     $kaarr[] = "<u><a href=‘$key_url‘ target=‘_blank‘>$key</a></u>";
19     }
20     foreach ($karr as $key => $word)
21     {
22     $body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight(‘\\2‘, \$karr[$key], \$kaarr[$key],
23  
24  
25 ‘\\1‘)", $body);
26     //echo $body."<br/>";
27     //恢复超链接
28     $body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU"‘\\1>\\3<\\4‘, $body);//暂时屏蔽超链接
29     $body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU"‘\\1-]-\\4-[-\\6‘, $body);
30     }
31     //恢复超链接
32     $body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU"‘\\1>\\3<\\4‘, $body);
33  
34  
35     return $body;
36     }
37     }
38     //End Archives
39     //高亮专用, 替换多次是可能不能达到最多次
40     function _highlight($string, $words, $result, $pre)
41     {
42     global $cfg_replace_num;
43     $string = str_replace(‘\"‘‘"‘, $string);
44 if($GLOBALS[‘replaced‘][$words] == 1){
45     return $pre.$string;
46     }
47 if($cfg_replace_num > 0){
48     $string = preg_replace("/".preg_quote($words)."/", $result, $string, $cfg_replace_num);
49     if(strpos($string, $words) !== false)
50     {
51         $GLOBALS[‘replaced‘][$words] = 1;
52         }
53         }
54 else{$string = str_replace($words, $result, $string);
55 }
56 return $pre.$string;
57 }

注意手动去掉代码里面的【分隔符】字样!

替换完成后保存即可,然后生成一下文章内容试试。


AiteCms,企业模板快速建站专家,点击了解更多

转载自织梦模板教程(www.dede58.com

时间: 2024-08-25 07:59:49

dedecms关键词维护里面字数多的词优先字数少的词的解决办法的相关文章

dedecms织梦首页被篡改 网站被黑被跳转的解决办法建议

2018年的中秋节即将来临,我们Sine安全公司,最近接到很多用dedecms程序的企业公司网站客户的反馈,说是公司网站经常被篡改,包括网站首页的标题内容以及描述内容,都被改成了什么×××,北京PK10等等的×××内容,而且大多数的网站客户都是从百度搜索关键词,点击进公司网站会被直接跳转到×××上去.对此我们Sine安全已经处理过很多像这样问题的客户网站,这种安全问题普遍的特征就是:频繁反复性质的篡改网站首页,重新在网站后台首页生成后,被篡改的内容就会清除,但没过多久就又被篡改了,使很多网站的负

千亿词霸下载|千亿词霸翻译器

千亿词霸具是我用过的最好的翻译软件,软件中有全文翻译新增查询选中词的功能,在原文框或解释框内双击查询词,即可在千亿词库内查询,得出精确的结果.完整收录了经济贸易,医学,政治,科技,化工,船舶等1600万条专业词汇和丰富例句.千亿词霸千亿词霸是一款非常实用的全能桌面翻译工具,千亿词霸集俄.中.英三国语言翻译学习的软件,它涵盖了大量的双语例句,完整地收录了经济贸易.医学.科技.船舶.化工.政治等1600万条专业词汇和释义,并且它是随着网络而不断更新的,翻译的内容永远都不会过时,使用户可以在俄中英三国

Fcitx不显示候选词框的解决办法

在非KDE桌面环境下,如果安装了fcitx-module-kimpanel,可能会导致Fcitx输入中文时不显示候选词框,移除该组件,然后重启Fcixt $ sudo apt remove fcitx-module-kimpanel http://www.cnblogs.com/canwyq/p/6418927.html ========================================================= Ubuntu安装Fcitx以及Fcitx输入中文不显示候选词

DedeCMS提示Maximum execution time of 30 seconds exceeded in解决办法

DedeCMS出现Fatal error: Maximum execution time of 30 seconds exceeded in解决办法 解决办法: 在服务器中找到php.ini这个文件(c盘Windows的也要改) 修改:max_execution_time = 30 max_execution_time = 30 ; 这个是每个脚本运行的最长时间,可以自己修改加长,单位秒为:max_execution_time = 300 然后重起mysql服务 在运行里输入: net stop

dedecms添加文章时提示标题为空,编辑文章时编辑器空白的解决办法

dedecms添加文章时提示标题为空,编辑文章时编辑器空白的解决办法 dedecms出现这个问题与代码无关,主要是和PHP的版本有关,用的PHP5.4,更换成PHP5.2之后就不会有这个问题了. 问题原因是:php5.4版本中htmlspecialchars在php5.4默认为utf8编码,gbk编码的字符串经过htmlspecialchars 转义后的中文字符串为空了,所以造成添加文章时提示"标题不能为空",编辑文章时编辑器内容空白. 解决的办法:标题不能为空修改dede/artic

Mac 中文输入法失效(不显示选词框)解决办法

问题描述: 1.可以正常切换中英文输入法: 2.切换到中文输入法(搜狗或则简体拼音),只显示拼音且带下划线,但是不显示选词狂: 解决办法: 方法1: 重启Mac,有时候重启后可以解决问题,有时候解决不了问题! 方法2: 点击Launchpad -> 活动监视器 (相当于windows的进程管理器), 右上角搜索框中,搜索 "中文输入法"  -> 双击对应的输入法,会有个弹窗弹出 -> 点击"退出" -> "确定"!

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ?Copyright 蕃薯耀 2017年9月25日 http://www.cnblogs.com/fanshuyao/ 一.问题描述 很多对外网站的某些内容都需要过滤敏感词,避免政治与色@情上的问题. 二.解决方案 使用词库进行匹配过滤成 * (星号) Java 敏感词工具类及敏感词词库见附件. 1.下载后,有几个类,主要为WordFilter 这个工具类,使用方法如下

Linux系统环境下安装dedecms(织梦)提示http500错误的解决办法

碰到一客户安装DEDE提示http500错误,问题已得到完美解决,下面我分享下 这个解决办法,希望有帮助. 故障状态:正常安装dedecms v5.7 gbk提示http500错误Dede安装环境:一个linux环境的php空间. 故障案例分析:http500错误,查询度娘的结果:1.“http 500为内部服务器错误,无法解析程序脚本”2.“http 500 错误是由于服务器运行用户多,导致服务器压力大,无法响应”3.“此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务

词向量与ELMo模型 词向量漫谈

目录: 基础部分回顾(词向量.语言模型) NLP的核心:学习不同语境下的语义表示 基于LSTM的词向量学习 深度学习中的层次表示以及Deep BI-LSTM ELMo模型 总结 1. 基础部分回顾(词向量.语言模型) 1.1 独热编码-词的表示 1.2 词向量-词的表示 我们为什么需要词向量?(One-hot向量的缺点?) 基于One-hot能否表示单词之间语义相似度? 1.2.1 基于One-hot能否表示单词之间语义相似度? 答:不可以.因为,我们不管是通过欧式距离还是通过余弦相似度,计算用