首頁  >  文章  >  後端開發  >  dedecms關鍵字替換方案

dedecms關鍵字替換方案

little bottle
little bottle轉載
2019-04-26 11:55:292522瀏覽

本篇文章主要講述了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);
    }
    return $pre . $string;
}
###注意:這裡我們需要在後台修改文件關鍵字的頻率,預設是 頻率高的優先替換,頻率低的後替換#######相關教學:###PHP影片教學#########

以上是dedecms關鍵字替換方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除