解决帝国CMS设置关键词与内容图片链接冲突问题

今天遇到了这个问题,关键词把我文章内超链接的都给改了,也找了很多解决方案都不管用,不管是把
‘/’. r [ k e y n a m e ] . ′ / i ′ 替 换 成 ′ / ′ . r[keyname].'/i'替换成'/'. r[keyname]./i/.r[keyname].’(?!([<]*>)|([<]*<\ a="">))/i’也好,还是其他方案,都不行。

不过还是找到了解决方案,以下是解决方法,已测试!

在e/class/functions.php中,查找代码:“ function ReplaceKey(newstext, newstext,newstext,classid=0)” 或 “//替换关键字”(有时打开为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']."'";
	}
	$newstext=stripslashes($newstext);
	preg_match_all('/<a[^>](.*)a>|<img[^>](.*)>/isU',stripslashes($newstext),$rs);
	if($rs[0]){
		foreach($rs[0] as $k=>$v){
			$newstext=str_replace($v,"[!--{$k}--]",$newstext); 
		}
	}
	$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].'/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]);
		}
	}
	if($rs[0]){
		foreach($rs[0] as $k=>$v){
			$newstext=str_replace("[!--{$k}--]",$v,$newstext); 
		}
	}
	return $newstext;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值