帝国cms常见问题:7.5重复关键字替换解决方案和方法

ECMSPLUS | 2020-11-04 |

摘要:帝国CMS重复关键字替换解决方案使用帝国CMS建站的朋友们都知道帝国CMS系统有一个内容关键字替换的功能,可是随着关键字的增多,问题的来了,那么是什么问题呢!我们来分析一下。
首...

帝国CMS(EmpireCMS)重复关键字替换解决方案juWECMSPLUS

使用帝国CMS(EmpireCMS)建站的朋友们都知道帝国CMS(EmpireCMS)系统有一个内容关键字替换的功能,可是随着关键字的增多,问题的来了,那么是什么问题呢!我们来分析一下。juWECMSPLUS

首先给你这么这个关键字:帝国CMS(EmpireCMS)建站,帝国CMS(EmpireCMS),帝国,程序代码如下:juWECMSPLUS

$str='帝国CMS(EmpireCMS)建站管理系统,最安全的网站建设系统';juWECMSPLUS
$keyboard = '帝国CMS(EmpireCMS)建站,帝国CMS(EmpireCMS),帝国';juWECMSPLUS
$kr = explode(',',$keyboard);juWECMSPLUS
foreach($kr as $v){juWECMSPLUS
    $str=str_replace($v,'[url=http://www.ecmsplus.com]'.$v.'[/url]',$str);juWECMSPLUS
}juWECMSPLUS
输出的结果步骤源代码为:juWECMSPLUS
1、[url=http://www.ecmsplus.com]帝国CMS(EmpireCMS)建站[/url]管理系统,最安全的网站建设系统juWECMSPLUS
2、[url=http://www.ecmsplus.com]帝国CMS(EmpireCMS)[/url]建站管理系统,最安全的网站建设系统juWECMSPLUS
3、[url=http://www.ecmsplus.com]帝国[/url]CMS建站管理系统,最安全的网站建设系统juWECMSPLUS

从结果我们可以看出,有多个相同的关键字被连续替换了,这样出现的结果是会造成页面的错乱,那么该如何来解决这个问题呢!解决思路如下:juWECMSPLUS

仔细观察我们发现当中是有一定规律的,它们的规律是:class="infotextkey">关键字,所以我们可以利用这个特性来做一下修改,修改如下:juWECMSPLUS

$str='帝国CMS(EmpireCMS)建站管理系统,最安全的网站建设系统';juWECMSPLUS
$keyboard = '帝国CMS(EmpireCMS)建站,帝国CMS(EmpireCMS),帝国';juWECMSPLUS
$kr = explode(',',$keyboard);juWECMSPLUS
foreach($kr as $v)juWECMSPLUS
{juWECMSPLUS
if(strpos($str,'class="infotextkey">'.$v)==false){ juWECMSPLUS
$str=str_replace($v,'[url=http://www.ecmsplus.com]'.$v.'[/url]',$str);juWECMSPLUS
}juWECMSPLUS
}juWECMSPLUS

它的原理就是,在第二次替换的时候,先检查一下当前关键字是否已经被替换过一次了,如果没有替换过,就替换。juWECMSPLUS

啰嗦了这么多,小白可能不耐烦了,想知道在帝国CMS(EmpireCMS)里该如何操作,答案如下:juWECMSPLUS

1、打开/e/class/functions.php文件,下拉到470行,截图如下:juWECMSPLUS

帝国CMS(EmpireCMS)7.5重复关键字替换解决方案和方法juWECMSPLUS

换截图中的函数代码替换成如下代码:juWECMSPLUS

//替换关键字 UTF-8版juWECMSPLUS
function ReplaceKey($newstext,$classid=0){juWECMSPLUS
    global $empire,$dbtbpre,$public_r,$class_r;juWECMSPLUS
    if(empty($newstext)||$class_r[$classid]['keycid']==-1){return $newstext;}juWECMSPLUS
    $where='';juWECMSPLUS
    if(!empty($class_r[$classid]['keycid'])){juWECMSPLUS
        $where=" where cid='".$class_r[$classid]['keycid']."'";juWECMSPLUS
    }juWECMSPLUS
    $sql=$empire->query("select keyname,keyurl from {$dbtbpre}enewskey".$where);juWECMSPLUS
    while($r=$empire->fetch($sql)){juWECMSPLUS
        if(strpos($newstext,'class="infotextkey">'.$r[keyname])==false) {juWECMSPLUS
        if (STR_IREPLACE) {juWECMSPLUS
            $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]);juWECMSPLUS
        } else {juWECMSPLUS
            $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]);juWECMSPLUS
        }juWECMSPLUS
        }juWECMSPLUS
    }juWECMSPLUS
    return $newstext;juWECMSPLUS
}juWECMSPLUS

红色字体部分就是我们要添加的,这个方法简单有效。最后再补充一点,是针对GBK编码版本的问题,当你在替换的时候会发现一个非常奇怪的问题,举例如下:juWECMSPLUS

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

在GBK编码下做了如下修改://GBK下需要转换编码juWECMSPLUS

//替换关键字 GBK版juWECMSPLUS
function ReplaceKey($newstext,$classid=0){juWECMSPLUS
    global $empire,$dbtbpre,$public_r,$class_r;juWECMSPLUS
    if(empty($newstext)||$class_r[$classid]['keycid']==-1){return $newstext;}juWECMSPLUS
    $where='';juWECMSPLUS
    if(!empty($class_r[$classid]['keycid'])){juWECMSPLUS
        $where=" where cid='".$class_r[$classid]['keycid']."'";juWECMSPLUS
    }juWECMSPLUS
    $sql=$empire->juWECMSPLUS
    query("select keyname,keyurl from {$dbtbpre}enewskey".$where);juWECMSPLUS
    $newstext2 = iconv('GBK','UTF-8',$newstext);juWECMSPLUS
    while($r=$empire->fetch($sql)){juWECMSPLUS
        if (strpos($newstext2 , iconv('GBK','UTF-8',$r[keyname])) !== false) {juWECMSPLUS
            if (strpos($newstext, 'class="infotextkey">' . $r[keyname]) == false) {juWECMSPLUS
                if (STR_IREPLACE) {juWECMSPLUS
                    $newstext = empty($public_r[repkeynum]) ? str_ireplace($r[keyname], 'juWECMSPLUS
                    <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>juWECMSPLUS
                    ', $newstext) : preg_replace('/' . $r[keyname] . '/i', 'juWECMSPLUS
                    <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>juWECMSPLUS
                    ', $newstext, $public_r[repkeynum]);juWECMSPLUS
                } else {juWECMSPLUS
                    $newstext = empty($public_r[repkeynum]) ? str_replace($r[keyname], 'juWECMSPLUS
                    <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>juWECMSPLUS
                    ', $newstext) : preg_replace('/' . $r[keyname] . '/i', 'juWECMSPLUS
                    <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>juWECMSPLUS
                    ', $newstext, $public_r[repkeynum]);juWECMSPLUS
                }juWECMSPLUS
            }juWECMSPLUS
    }juWECMSPLUS
}juWECMSPLUS
return $newstext;juWECMSPLUS
}juWECMSPLUS

至此完毕。juWECMSPLUS

如下示例代码:

<p>$str=&#39;帝国CMS建站管理系统,最安全的网站建设系统&#39;;<br />$keyboard = &#39;帝国CMS建站,帝国CMS,帝国&#39;;<br />$kr = explode(&#39;,&#39;,$keyboard);<br />foreach($kr as $v){<br />&nbsp; &nbsp; $str=str_replace($v,&#39;[url=http://www.dgmoban.com]&#39;.$v.&#39;[/url]&#39;,$str);<br />}<br />输出的结果步骤源代码为:<br />1、[url=http://www.dgmoban.com]帝国CMS建站[/url]管理系统,最安全的网站建设系统<br />2、[url=http://www.dgmoban.com]帝国CMS[/url]建站管理系统,最安全的网站建设系统<br />3、[url=http://www.dgmoban.com]帝国[/url]CMS建站管理系统,最安全的网站建设系统</p>

免责/版权声明:

本篇文章给大家谈谈帝国cms常见问题:7.5重复关键字替换解决方案和方法以及帝国cms对应的知识,感谢你花时间阅读本站内容,希望对各位有所帮助,你也可以查看更多关于帝国cms的信息。

1、所有来源标注为 ECMSPLUS/zwcms.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可,如涉及大面积转载,请来信告知,获取授权。

2、本站所提供的文章资讯、软件资源、素材源码等内容均为作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我们,本站将在三个工作日内改正。

3、若您的网站或机构从本站获取的一切资源进行商业使用,除来源为本站的资料需与本站协商外,其他资源请自行联系版权所有人。

4、 ECMSPLUS/zwcms.com不保证资源的准确性、安全性和完整性,请您在阅读、下载及使用过程中自行确认,本站亦不承担上述资源对您或您的网站造成的任何形式的损失或伤害

5、未经 ECMSPLUS/zwcms.com允许,不得盗链、盗用本站资源;不得复制或仿造本网站,不得在非 ECMSPLUS/zwcms.com所属的服务器上建立镜像, ECMSPLUS/zwcms.com对其自行开发的或和他人共同开发的所有内容、技术手段和服务拥有全部知识产权,任何人不得侵害或破坏,也不得擅自使用。

6、互联网的本质是自由与分享,我们真诚的希望,每一份有价值的正能量能够在互联网中自由传播,能够为每一个网站提供动力。

标签:
精品源码
  • 二维码种子溯源系统,一物一码防伪验证查询(单用户版) 支持定制开发

    惊爆价¥1500.00

    立即购买
    二维码种子溯源系统,一物一码防伪验证查询(单用户版) 支持定制开发
  • 帝国cms7.5精仿企业信息综合门户《莞商网》(原创)

    惊爆价¥1500.00

    立即购买
    帝国cms7.5精仿企业信息综合门户《莞商网》(原创)
  • 厂房网,厂房出租,厂房出售,仓库出租,园区招商商铺厂房网整站源码

    惊爆价¥1999.00

    立即购买
    厂房网,厂房出租,厂房出售,仓库出租,园区招商商铺厂房网整站源码
看点推荐
精选文章

站长交流群

互联网站长技术交流群
共同学习,共同进步,共同成长!

QQ交流群

推荐文章

EmpireCMS(帝国CMS) 最新版(v7.5)已知漏洞汇总

帝国第三方登陆:微信内部登陆+扫码登陆2.0安装说明与使用方法

帝国cms百度Webupload批量上传组件,支持前台投稿

帝国cms通过用灵动标签的SQL语句查询来调用栏目导航

帝国cms图片集字段morepic分割,自定义图片集显示

帝国cms 技巧整理笔记,持续更新中

帝国cms 技巧整理笔记:常用变量,COOKIE获取和系统模板

最新文章

热门标签

关注我们

微信扫一扫,关注更多精彩

  • 公众号
    全面掌握源码一手资讯

  • 服务号
    精彩活动,推送提醒

垂询热线:18680688182

商务合作:0769-8700 9090
文章投稿: