dedecms关键词替换方案

来自:互联网
时间:2020-04-14
阅读:
免费资源网 - https://freexyz.cn/

本篇文章主要讲述了dedecms关键词替换方案,根据频率先替换长尾关键词再替换主关键词,本篇章具有一定的参考价值,感兴趣的朋友可以了解一下。

问题:在使用dedecms的文档关键词替换功能时,会造成交叉替换,如:

长尾关键词1:男人喝金丝皇菊有什么好处?

长尾关键词2:喝金丝皇菊有什么好处?

主关键词3:金丝皇菊

使用系统默认的功能时,在替换主关键词的时候,会将上面已经替换好的长尾关键词中的“金丝皇菊”也替换掉,从而破坏了原有的长尾关键词锚文本。

解决思路:

1.先将要替换的关键词替换成类似:

关键词1:'#####0#####'

关键词2:'#####2#####'

关键词3:'#####3#####'

再进行以上替换操作的时候,我们需要保存关键词所对应的锚文本,如:

'#####0#####' --> 关键词1的锚文本

'#####1#####' --> 关键词2的锚文本

'#####2#####' --> 关键词3的锚文本

等全部替换完毕后,我们最后再恢复回来

这里,我们主要修改:include/arc.archives.class.php 文件

修改部分如下:

//高亮专用, 替换多次是可能不能达到最多次 
 
function _highlight($string, $words, $result, $pre) { 
 
    global $cfg_replace_num; 
 
    //     if (version_compare(PHP_VERSION, '5.5.0', '>=')) 
 
    //     { 
 
    //         $string = $string[0]; 
 
    //         $pre = $pre[0]; 
 
    //     } 
 
      
 
    //修改 Start 
 
    $replaced_array = array(); 
 
    $replaced_tiems = 0; 
 
    //修改 End 
 
      
 
    $string = str_replace('"', '"', $string); 
 
    if ($cfg_replace_num > 0) { 
 
        foreach ($words as $key => $word) { 
 
            if ($GLOBALS['replaced'][$word] == 1) { 
 
                continue; 
 
            } 
 
            //修改 Start 
 
            $replace_string = '#####' . $replaced_tiems . '#####'; 
 
            $replaced_array[$replace_string] = $result[$key]; 
 
            $string = preg_replace("#" . preg_quote($word) . "#", $replace_string, $string, $cfg_replace_num); 
 
            $replaced_tiems+= 1; 
 
            //修改  End 
 
            //             $string = preg_replace("#".preg_quote($word)."#", $result[$key], $string, $cfg_replace_num); 
 
            if (strpos($string, $word) !== FALSE) { 
 
                $GLOBALS['replaced'][$word] = 1; 
 
            } 
 
        } 
 
        //修改 Start 
 
        foreach ($replaced_array as $k => $v) { 
 
            $string = str_ireplace($k, $v, $string); 
 
        } 
 
        //修改  End 
 
 
 
    } else { 
 
        $string = str_replace($words, $result, $string); 
 
    } //phpfensi.com 
 
    return $pre . $string; 
 
}

注意:这里我们需要在后台修改文档关键词的频率,默认是 频率高的优先替换,频率低的后替换。

免费资源网 - https://freexyz.cn/
返回顶部
顶部