当前位置:首页 - 帝国教程 - 帝国cms进阶 - 帝国cms文章内链被拆分导致乱码错位的解决方案

帝国cms文章内链被拆分导致乱码错位的解决方案

时间:2018-11-03来源: 作者: 文章热度:
点评:内链在seo中的重要作用是毋庸置疑的!

解决帝国CMS内链系统会默认替换内容关键词已存在的a链接。

在帝国CMS的内容关键词替换中会遇到替换了原文中已存在的链接,如已经手动添
...内链在seo中的重要作用是毋庸置疑的!

解决帝国cms内链系统会默认替换内容关键词已存在的a链接。

帝国CMS的内容关键词替换中会遇到替换了原文中已存在的链接,如已经手动添加的关键词链接:帝国CMS ,如果我们在新闻模型内容关键词连接中分别填写了 帝国、cms那么文章中已存在的帝国CMS链接会被拆分,并且链接会错乱。

1、首先我们找到/e/class/functions.php

2、打开文件,搜索://替换关键字

3、替换下面的if(STR_IREPLACE)判断,/i替换为(?!([^<]*>)|([^<]*<\/a>))/i,如下图。

<a href=https://www.cgtblog.com/diguo/ target=_blank class=infotextkey>帝国CMS</a>文章内链被拆分的解决方案

代码如下(如果问题可以联系帝国CMS仿站技术员qq282.231.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(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].'(?!([^<]*>)|([^<]*<\/a>))/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].'(?!([^<]*>)|([^<]*<\/a>))/i','<a href='.$r[keyurl].' target=_blank class=infotextkey>'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);
        }
    }
    return $newstext;
}

4、原理主要是给添加了一个规则过滤掉已存在的链接,不为连接替换关键词链接。
对以上正则不是很熟可以去学习正则表达式,http://www.sfk8.com/jiaocheng/php/228.html
这样对正则表达式能更深入的了解

文章TAG:内链 内链 seo 帝国cms
相关帝国cms进阶
最新帝国cms进阶