加入收藏 | 设为首页 | 我要投稿 | RSS中药方rss
中药方大全小图标
您当前的位置:首页 > 其他 > 网站日记

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

提示: 手机抄药方--选中文字可生成二维码  来源:jiuhecai  作者:blueharbour

问题的提出:


1、关键字替换如何避免IMG标签里的ALT字段被替换
2、在内容中,偶尔链接中含有关键字,如何避免这个关键字被替换


分析问题:


帝国cms的关键字替换功能,后台控制在:系统参数设置- 信息设置 


blob.png

重复替换次数为单个关键字在某一篇文章中的替换次数。设置为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函数进行有次数限制的正则替换。


需要排除两种情况。假定关键字为“你好”。


  1. 关键字在<...>中:比如 这图不错你好我也好, 比如

  2. 关键字不在<...>中,但是属于在链接中,比如:<a href="www.zhongyf.com" title="test" >中药方大全,你好你真的很好!


情形一对应的正则为: 你好[^<]*>,所以我们构造“?!([^<]*>)”排除。

性情二对应的正则为: 你好[^<]*< a="">,所以我们构造“?!([^<]*< a="">)”排除。

合并后为  (?!([^<]*>)|([^<]*< a="">))。



解决方案:


上述文件中对应的函数位置,修改正则即可。记住有两个地方。

 

修改前的正则为:'/'.$r[keyname].'/i'

修改后为:'/'.$r[keyname].'(?!([^<]*>)|([^<]*< a="">))/i'

【补记】因为编辑器过滤,您看到的上述正则表达式有误,以图片为准

111.jpg

tags: 帝国cms 关键字 返回顶部
推荐资讯
视频:田纪钧讲关节不痛的秘密、膝关节拉筋法
视频:田纪钧讲关节不
白露到了,你还好吗?
白露到了,你还好吗?
尿疗与断食
尿疗与断食
给风疹反复发作女孩的药方(组图)
给风疹反复发作女孩的
相关文章
栏目更新
栏目热门
  1. 帝国cms7.2后台信息列表页批量添加tags
  2. 帝国cms之批量替换字段值
  3. 帝国cms7.2改用百度编辑器
  4. 如何禁止内容关键字替换ALT和A标签中的关键
  5. 帝国cms百度主动推送插件支持分页推送
  6. 显示二维码
  7. 帝国cms插件大全
  8. 帝国cms获取当前页的地址
  9. 【帝国cms插件】之三级联动+伪静态
  10. 帝国cms之egetzy函数