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

首頁 > CMS > 帝國Empire > 正文

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

2024-08-28 12:24:59
字體:
供稿:網(wǎng)友

banner4.jpg

使用帝國CMS建站的朋友們都知道帝國CMS系統(tǒng)有一個內(nèi)容關鍵字替換的功能,可是隨著關鍵字的增多,問題的來了,那么是什么問題呢!我們來分析一下。

首先給你這么這個關鍵字:帝國CMS建站,帝國CMS,帝國,程序代碼如下:

 

$str='帝國CMS建站管理系統(tǒng),最安全的網(wǎng)站建設系統(tǒng)';
$keyboard = '帝國CMS建站,帝國CMS,帝國';
$kr = explode(',',$keyboard);
foreach($kr as $v)
{
$str=str_replace($v,'<a href="http://www.dgcms.cn" target="_blank" class="infotextkey">'.$v.'</a>',$str);
}
輸出的結(jié)果步驟源代碼為:
1、<a href="http://www.dgcms.cn" target="_blank" class="infotextkey">帝國CMS建站</a>管理系統(tǒng),最安全的網(wǎng)站建設系統(tǒng)
2、<a href="http://www.dgcms.cn" target="_blank" class="infotextkey"><a href="http://www.dgcms.cn"target="_blank" class="infotextkey">帝國CMS</a>建站</a>管理系統(tǒng),最安全的網(wǎng)站建設系統(tǒng)
3、<a href="http://www.dgcms.cn" target="_blank" class="infotextkey"><a href="http://www.dgcms.cn"target="_blank" class="infotextkey"><a href="http://www.dgcms.cn" target="_blank" class="infotextkey">帝國</a>CMS</a>建站</a>管理系統(tǒng),最安全的網(wǎng)站建設系統(tǒng)

 

從結(jié)果我們可以看出,有多個相同的關鍵字被連續(xù)替換了,這樣出現(xiàn)的結(jié)果是會造成頁面的錯亂,那么該如何來解決這個問題呢!解決思路如下:

仔細觀察我們發(fā)現(xiàn)當中是有一定規(guī)律的,它們的規(guī)律是:class="infotextkey">關鍵字,所以我們可以利用這個特性來做一下修改,修改如下:

 

$str='帝國CMS建站管理系統(tǒng),最安全的網(wǎng)站建設系統(tǒng)';
$keyboard = '帝國CMS建站,帝國CMS,帝國';
$kr = explode(',',$keyboard);
foreach($kr as $v)
{
if(strpos($str,'class="infotextkey">'.$v)==false){
$str=str_replace($v,'<a href="http://www.dgcms.cn" target="_blank" class="infotextkey">'.$v.'</a>',$str);
}
}
 

它的原理就是,在第二次替換的時候,先檢查一下當前關鍵字是否已經(jīng)被替換過一次了,如果沒有替換過,就替換。

啰嗦了這么多,小白可能不耐煩了,想知道在帝國CMS里該如何操作,答案如下:
1、打開/e/class/functions.php文件,下拉到470行,截圖如下:
QQ截圖20151022210242.jpg
換截圖中的函數(shù)代碼替換成如下代碼:
//替換關鍵字 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編碼版本的問題,當你在替換的時候會發(fā)現(xiàn)一個非常奇怪的問題,舉例如下:

 

$str1='有可';if (strstr($str1 , '鋅')) {    echo '找到了!';}else{    echo '沒找到!';}

在GBK編碼下,你會驚訝的發(fā)現(xiàn),輸出的結(jié)果是:找到了!,在UTF-8編碼下卻是我們正常邏輯理解的:沒找到!,這個問題我糾結(jié)了小半天,后來得到群里的軒兒(瑪仙)提供了解決方案才得以解決,他給的方案是在GBK下需要轉(zhuǎn)換編碼,具體操作如下:

QQ圖片20151022212354.png

所以根據(jù)他提供的方案,在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;
}

OK,整個教程就說到這,有什么問題請留言!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 辉南县| 古浪县| 清涧县| 若尔盖县| 普格县| 延长县| 尤溪县| 云阳县| 静海县| 遵义县| 永靖县| 双牌县| 曲阜市| 仁寿县| 仪征市| 抚远县| 昂仁县| 福建省| 托克逊县| 乌鲁木齐市| 镇沅| 黑龙江省| 云梦县| 治多县| 崇文区| 吴江市| 开封市| 峡江县| 乐陵市| 上蔡县| 南充市| 博湖县| 察哈| 获嘉县| 义马市| 宜城市| 宽城| 始兴县| 蓝山县| 汉源县| 贡觉县|