DedeCMS关键词替换问题较完美解决方法
<p><strong style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>问题描述</strong></p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
织梦内容关键词替换的时候存在一个错误:如果拥有两个关键词,例如“jb51.net”(www.jb51.net/tags/jb51.net.html)和“jb51.net信息网”(www.jb51.net),但在文章替换的时候我们发现就会出现问题,链接变成了:</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
<a href="http://www.jb51.net"><u><a href="www.jb51.net/tags/jb51.net.html">jb51.net</a>信息网</u></a></p>
<p>
<strong style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>解决方案</strong></p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
这样的嵌套错误无论对SEO还是用户体验都是不好的,这里我们有一个解决方案,也就是先替换比较短的,然后再匹配替换长的,这样系统则会先去替换jb51.net这个关键词,而不会去替换jb51.net信息网了。</p>
<p>
<strong style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>修改代码</strong></p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
其实修改代码很简单,我们直接找到include/arc.archives.class.php这个文件,在1226行代码,也就是: </p>
<p style='margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; font-family: tahoma, arial, "Microsoft YaHei";'>
//高亮专用, 替换多次是可能不能达到最多次</p>
<p style='margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; font-family: tahoma, arial, "Microsoft YaHei";'>
function _highlight($string, $words, $result, $pre)</p>
<p style='margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; font-family: tahoma, arial, "Microsoft YaHei";'>
{</p>
<p style='margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; font-family: tahoma, arial, "Microsoft YaHei";'>
global $cfg_replace_num;</p>
<p style='margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; font-family: tahoma, arial, "Microsoft YaHei";'>
$string = str_replace('"', '"', $string);</p>
<p style='margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; font-family: tahoma, arial, "Microsoft YaHei";'>
</p>
<p style='margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; font-family: tahoma, arial, "Microsoft YaHei";'>
后面增加一段代码,使它变为</p>
<div style='margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; font-family: tahoma, arial, "Microsoft YaHei";'>
<p>
//高亮专用, 替换多次是可能不能达到最多次</p>
<p>
function _highlight($string, $words, $result, $pre)</p>
<p>
{</p>
<p>
global $cfg_replace_num;</p>
<p>
$string = str_replace('"', '"', $string);</p>
<p>
uasort($words,create_function('$a, $b','return strlen($a)>strlen($b);'));</p>
<p>
<strong>总结</strong></p>
<p>
DedeCMS对于SEO爱好者确实是一个利器,如何用好还需要深入琢磨。</p>
</div>
<p>
</p>
頁:
[1]