问题的提出:
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="">,所以我们构造“?!([^<]*< a="">)”排除。
合并后为 (?!([^<]*>)|([^<]*< a="">))。
解决方案:
上述文件中对应的函数位置,修改正则即可。记住有两个地方。
修改前的正则为:'/'.$r[keyname].'/i'
修改后为:'/'.$r[keyname].'(?!([^<]*>)|([^<]*< a="">))/i'
【补记】因为编辑器过滤,您看到的上述正则表达式有误,以图片为准
猜你喜欢
联络方式:
电话:13888888888
邮箱:139404000@qq.com
-
响应式(自适应)网站的优点,缺点大PK
近年来,各种大屏幕移动设备的普及,响应式网站也受到了更多人的青睐。甚至大多数的人认为,响应式网站是实现友好移动目标,更好、更快、更省的方案。通俗的说,就是一个网站可以兼容...
-
destoon7.0程序 禁止同一个会员发布重复标题信息
信息标题重复对于网站优化来说是非常不利,如果大量标题重复的话,很容易造成网站权重下降,收录下降,DT是一个非常优秀的建站系统,6以前都有网友总结出禁止发布重复标题的内容,由于...
-
什么是本地区关键词全国性关键词?
地区性关键词:是指关键词中带有地区名称,如:关键词为“深圳网站建设公司”,该词为地区性关键词,因为关键词中出现了地区名称“深圳”。全国性关键词:是指关键...
-
线上营销线下消费 小程序开启流量争夺战
不知不觉,小程序也已上线一周年了,小程序的出现为创业者们打开了一个新的程序入口,仅仅一年的时间,小程序已经涵盖了衣食住行各个方面。甚至支付宝、美团、滴滴、京东,还有三大运...
-
destoon7.0 手机链接在电脑上访问直接跳转到PC页面的修改方法
修改include/mobile.inc.php 第八行代码 原代码:if(is_pc() && strpos($DT_URL, ‘device.php’) === false) dheader( DT_PATH.’api/mobile.php?act...