帝国cms内容关键字把alt里的字符都给替换了,怎么解决?

问题


1,<a class="infotextkey" href="/zt/dnfhhgjzt" target="_blank" rel="noopener">DNF</a>syhfioshhbzt target=_blank class=infotextkey&gt;

地下城 地下城这个关键字链接中有个dnf,结果这个dnf又被关键词DNF给替换了,请问怎么解决呢?

2,<img title="王者荣耀" alt="&lt;a href=" />王者荣耀艾琳专精装怎么样?艾琳专精装效果介绍图片1" src="

解决方法一:

仅限于系统设置了替换次数,实际上从seo来说不建议把整篇文章都替换,那样页面中如果出现关键字过多,那么相同连接就泛滥了,如果你系统设置中设置的替换成1次,2次,只要不是0,那么修改e/class/functions.php中的ReplaceKey函数,425行左右,修改如下:

原函数:

$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 href='.$r[keyurl].' target=_blank class="infotextkey">'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);

修改后的:

$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 href='.$r[keyurl].' target=_blank class="infotextkey">'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);

preg_replace是正则判断,就用正则表达式把<>里面的排除掉。这样一来问题就解决了。以上代码只是防止 ALT属性被替换
修改前记得备份,改坏了不负责。 本方法干净大方,无累赘,不增加负担~ 在7.5版本测试通过。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注