帝国cms文章内链被拆分导致乱码错位的解决方案
时间:2018-11-03来源: 作者: 文章热度: ℃
点评:内链在seo中的重要作用是毋庸置疑的!
解决帝国CMS内链系统会默认替换内容关键词已存在的a链接。
在帝国CMS的内容关键词替换中会遇到替换了原文中已存在的链接,如已经手动添
解决帝国CMS内链系统会默认替换内容关键词已存在的a链接。
在帝国CMS的内容关键词替换中会遇到替换了原文中已存在的链接,如已经手动添
...内链在seo中的重要作用是毋庸置疑的!
解决帝国cms内链系统会默认替换内容关键词已存在的a链接。
在帝国CMS的内容关键词替换中会遇到替换了原文中已存在的链接,如已经手动添加的关键词链接:帝国CMS ,如果我们在新闻模型内容关键词连接中分别填写了 帝国、cms那么文章中已存在的帝国CMS链接会被拆分,并且链接会错乱。
1、首先我们找到/e/class/functions.php
解决帝国cms内链系统会默认替换内容关键词已存在的a链接。
在帝国CMS的内容关键词替换中会遇到替换了原文中已存在的链接,如已经手动添加的关键词链接:帝国CMS ,如果我们在新闻模型内容关键词连接中分别填写了 帝国、cms那么文章中已存在的帝国CMS链接会被拆分,并且链接会错乱。
1、首先我们找到/e/class/functions.php
2、打开文件,搜索://替换关键字
3、替换下面的if(STR_IREPLACE)判断,/i替换为(?!([^<]*>)|([^<]*<\/a>))/i,如下图。
代码如下(如果问题可以联系帝国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
这样对正则表达式能更深入的了解
相关帝国cms进阶:
最新帝国cms进阶: