SEO策略

关键词覆盖、索引量、排名、点击率、转化率

如何禁止帝国cms内容关键字替换ALT和A标签中的关键词

indiepop2017-06-20 15:12:570℃

 问题的提出:

 
1、关键字替换如何避免IMG标签里的ALT字段被替换
2、在内容中,偶尔链接中含有关键字,如何避免这个关键字被替换
 
分析问题:
 
帝国cms的关键字替换功能,后台控制在:系统参数设置- 信息设置 
重复替换次数为单个关键字在某一篇文章中的替换次数。设置为0,不限制。
帝国关键字替换
 
函数代码,则实在在e/class/functions.php中,关键部分为:
 
if(STR_IREPLACE)
{
$newstext=empty($public_r[repkeynum])?str_ireplace($r[keyname],''.$r[keyname].'',$newstext):
preg_replace('/'.$r[keyname].'/i',''.$r[keyname].'',$newstext,$public_r[repkeynum]);
}
else
{
$newstext=empty($public_r[repkeynum])?str_replace($r[keyname],''.$r[keyname].'',$newstext):
preg_replace('/'.$r[keyname].'/i',''.$r[keyname].'',$newstext,$public_r[repkeynum]);
 
 
可见$public_r[repkeynum]就表示替换次数,为0或空的时候,使用str_replace函数,一股脑替换;不为空的时候,使用preg_replace函数进行有次数限制的正则替换。
 
 
需要排除两种情况。假定关键字为“你好”。
 
关键字在<...>中:比如 这图不错你好我也好, 比如
关键字不在<...>中,但是属于在链接中,比如:<a href="seocelue.com" title="test" >你好你真的很好
 
情形一对应的正则为: 你好[^<]*>,所以我们构造“?!([^<]*>)”排除。
性情二对应的正则为: 你好[^<]*< a="">,所以我们构造“?!([^<]*< a="">)”排除。
合并后为  (?!([^<]*>)|([^<]*< a="">))。
 
 
解决方案:
 
上述文件中对应的函数位置,修改正则即可。记住有两个地方。
 
修改前的正则为:'/'.$r[keyname].'/i'
 
修改后为:'/'.$r[keyname].'(?!([^<]*>)|([^<]*< a="">))/i'
如果编辑器过滤,正则表达式有误的话,请以下图片为准
2.jpg

上一篇:强行使DNS立即生效

上一篇:知识讲解:域名解析中你不知道的TTL

文章下方广告位

网友评论