国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > 帝國Empire > 正文

帝國CMS重復關鍵字替換解決方法

2024-08-28 12:25:16
字體:
來源:轉載
供稿:網友
使用帝國CMS建站的朋友們都知道帝國CMS系統有一個內容關鍵字替換的功能,可是隨著關鍵字的增多,問題的來了,那么是什么問題呢!我們來分析一下。
首先給你這么這個關鍵字:帝國CMS建站,帝國CMS,帝國,程序代碼如下:
$str='帝國CMS建站管理系統,最安全的網站建設系統';
$keyboard = '帝國CMS建站,帝國CMS,帝國';
$kr = explode(',',$keyboard);
foreach($kr as $v){
    $str=str_replace($v,'[url=http://www.dgmoban.com]'.$v.'[/url]',$str);
}
輸出的結果步驟源代碼為:
1、[url=http://www.dgmoban.com]帝國CMS建站[/url]管理系統,最安全的網站建設系統
2、[url=http://www.dgmoban.com]帝國CMS[/url]建站管理系統,最安全的網站建設系統
3、[url=http://www.dgmoban.com]帝國[/url]CMS建站管理系統,最安全的網站建設系統

從結果我們可以看出,有多個相同的關鍵字被連續替換了,這樣出現的結果是會造成頁面的錯亂,那么該如何來解決這個問題呢!解決思路如下:
仔細觀察我們發現當中是有一定規律的,它們的規律是:class="infotextkey">關鍵字,所以我們可以利用這個特性來做一下修改,修改如下:

$str='帝國CMS建站管理系統,最安全的網站建設系統';
$keyboard = '帝國CMS建站,帝國CMS,帝國';
$kr = explode(',',$keyboard);
foreach($kr as $v)
{
if(strpos($str,'class="infotextkey">'.$v)==false){ 
$str=str_replace($v,'[url=http://www.dgmoban.com]'.$v.'[/url]',$str);
}
}
它的原理就是,在第二次替換的時候,先檢查一下當前關鍵字是否已經被替換過一次了,如果沒有替換過,就替換。
啰嗦了這么多,小白可能不耐煩了,想知道在帝國CMS里該如何操作,答案如下:
1、打開/e/class/functions.php文件,下拉到470行,截圖如下:
083136p4h77lo5nm11rhdh.jpg
換截圖中的函數代碼替換成如下代碼:
//替換關鍵字 UTF-8版
function ReplaceKey($newstext,$classid=0){
    global $empire,$dbtbpre,$public_r,$class_r;
    if(empty($newstext)||$class_r[$classid]['keycid']==-1){return $newstext;}
    $where='';
    if(!empty($class_r[$classid]['keycid'])){
        $where=" where cid='".$class_r[$classid]['keycid']."'";
    }
    $sql=$empire->query("select keyname,keyurl from {$dbtbpre}enewskey".$where);
    while($r=$empire->fetch($sql)){
        if(strpos($newstext,'class="infotextkey">'.$r[keyname])==false) {
        if (STR_IREPLACE) {
            $newstext = empty($public_r[repkeynum]) ? str_ireplace($r[keyname], '<a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>', $newstext) : preg_replace('/' . $r[keyname] . '/i', '<a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>', $newstext, $public_r[repkeynum]);
        } else {
            $newstext = empty($public_r[repkeynum]) ? str_replace($r[keyname], '<a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>', $newstext) : preg_replace('/' . $r[keyname] . '/i', '<a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>', $newstext, $public_r[repkeynum]);
        }
        }
    }
    return $newstext;
}
紅色字體部分就是我們要添加的,這個方法簡單有效。最后再補充一點,是針對GBK編碼版本的問題,當你在替換的時候會發現一個非常奇怪的問題,舉例如下:
$str1='有可';
if (strstr($str1 , '鋅')) {
    echo '找到了!';
}else{
    echo '沒找到!';
}
在GBK編碼下做了如下修改://GBK下需要轉換編碼
//替換關鍵字 GBK版
function ReplaceKey($newstext,$classid=0){
    global $empire,$dbtbpre,$public_r,$class_r;
    if(empty($newstext)||$class_r[$classid]['keycid']==-1){return $newstext;}
    $where='';
    if(!empty($class_r[$classid]['keycid'])){
        $where=" where cid='".$class_r[$classid]['keycid']."'";
    }
    $sql=$empire->
    query("select keyname,keyurl from {$dbtbpre}enewskey".$where);
    $newstext2 = iconv('GBK','UTF-8',$newstext);
    while($r=$empire->fetch($sql)){
        if (strpos($newstext2 , iconv('GBK','UTF-8',$r[keyname])) !== false) {
            if (strpos($newstext, 'class="infotextkey">' . $r[keyname]) == false) {
                if (STR_IREPLACE) {
                    $newstext = empty($public_r[repkeynum]) ? str_ireplace($r[keyname], '
                    <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>
                    ', $newstext) : preg_replace('/' . $r[keyname] . '/i', '
                    <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>
                    ', $newstext, $public_r[repkeynum]);
                } else {
                    $newstext = empty($public_r[repkeynum]) ? str_replace($r[keyname], '
                    <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>
                    ', $newstext) : preg_replace('/' . $r[keyname] . '/i', '
                    <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>
                    ', $newstext, $public_r[repkeynum]);
                }
            }
    }
}
return $newstext;
}
教程結束。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 叶城县| 沂水县| 甘谷县| 安阳县| 凌云县| 科尔| 凤山县| 内乡县| 大理市| 黔西| 大同市| 长春市| 肃南| 上林县| 海丰县| 长葛市| 兴山县| 玉环县| 衡山县| 镇安县| 泰来县| 凯里市| 平乡县| 莱阳市| 清河县| 沭阳县| 淅川县| 稷山县| 汉沽区| 北宁市| 馆陶县| 邵武市| 峨山| 台州市| 隆尧县| 遂平县| 革吉县| 门源| 隆昌县| 堆龙德庆县| 宁波市|