魔扣论坛

魔扣源码论坛业务
查看: 1138|回复: 5

[经验交流] 织梦文档关键词维护中设置词语重叠后出错的修改方法

[复制链接]
  • TA的每日心情
    难过
    13 小时前
  • 签到天数: 2929 天

    [LV.Master]开坛老将

    7万

    主题

    227

    回帖

    27万

    积分

    管理员

    Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

    魔扣币
    745005
    贡献
    157749
    威望
    32799

    最佳新人活跃会员热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2018-11-19 20:55:09 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    使用织梦系统的文档关键词维护,假如增加两个关键词为“织梦”和“织梦先生”,那么在文章中出现“织梦先生”这个词的时候,锚文本HTML就会出错,我想这是很多用过这个功能的SEOer见到过的。
    在很早以前我就发现过,但是因为自己已经很长时间没有使用织梦系统了,只是这次帮助客户修改时,有这个需求,就在这里做一下记录。
    需要修改两个函数,都在同一个文件中(include/arc.archives.class.php),一个是类Archives中的ReplaceKeyword()函数,另一个是文件最末尾的_highlight()函数。
    修改源码中把织梦原版代码注释掉了,以便比较源码和理解修改思路,源码如下:

    01
      /**

    02
         * 高亮问题修正, 排除alt title <a></a>直接的字符替换

    03
         *

    04
         * @param string $kw

    05
         * @param string $body

    06
         * @return string

    07
         */

    08
        function ReplaceKeyword($kw,&$body)

    09
        {

    10
            global $cfg_cmspath;

    11
            $maxkey = 5;

    12
            $kws = explode(",",trim($kw));    //以分好为间隔符

    13
            $i=0;

    14
            $karr = $kaarr = $GLOBALS['replaced'] = array();

    15

    16
            //暂时屏蔽超链接

    17
            $body = preg_replace("#(<a(.*))(>)(.*)(<)(/a>)#isU", '\1-]-\4-[-\6', $body);

    18

    19
            // $query = "SELECT * FROM keywords WHERE rpurl<>'' ORDER BY rank DESC"; // 原版的

    20
    $query="SELECT * FROM `keywords` WHERE rpurl<>'' and sta=1 ORDER BY length(keyword) DESC"; // 修改 优先处理长关键词

    21
            $this->dsql->SetQuery($query);

    22
            $this->dsql->Execute();

    23
            while($row = $this->dsql->GetArray())

    24
            {

    25
                $key = trim($row['keyword']);

    26
                $key_url=trim($row['rpurl']);

    27
                $karr[] = $key;

    28
                $kaarr[] = "<a class='title-prefix' href='$key_url' target='_blank'>$key</a>"; // 删除 <u> 和 </u> ,增加class属性

    29
            }

    30

    31
            // 这里可能会有错误

    32
            // $body = @preg_replace("#(^|>)([^<]+)(?=<|$)#sUe", "_highlight('\2', $karr, $kaarr, '\1')", $body);

    33

    34
    foreach ($karr as $key => $word)

    35
    {

    36
    $body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\2', $karr[$key], $kaarr[$key], '\1')", $body);

    37
    //echo $body."<br/>";

    38
    //恢复超链接

    39
    $body = preg_replace("/(<a(.*))-]-(.*)-[-(/a>)/isU", '\1>\3<\4', $body);

    40
    //暂时屏蔽超链接

    41
    $body = preg_replace("/(<a(.*))(>)(.*)(<)(/a>)/isU", '\1-]-\4-[-\6', $body);

    42
    }

    43

    44
            //恢复超链接

    45
            $body = preg_replace("#(<a(.*))-]-(.*)-[-(/a>)#isU", '\1>\3<\4', $body);

    46
            return $body;

    47
        }




    01
    //高亮专用, 替换多次是可能不能达到最多次

    02
    function _highlight($string, $words, $result, $pre)

    03
    {

    04
        global $cfg_replace_num;

    05
        $string = str_replace('"', '"', $string);

    06
    if($GLOBALS['replaced'][$words] == 1){

    07
    return $pre.$string;

    08
    }

    09
        if($cfg_replace_num > 0)

    10
        {

    11
            // foreach ($words as $key => $word)

    12
            // {

    13
            //     if($GLOBALS['replaced'][$word] == 1)

    14
            //     {

    15
            //         continue;

    16
            //     }

    17
                //$string = preg_replace("#".preg_quote($key)."#", $result[$key], $string, $cfg_replace_num);

    18
                $string = preg_replace("#".preg_quote($words)."#", $result, $string, $cfg_replace_num);  // 修改后

    19
                if(strpos($string, $words) !== FALSE)

    20
                {

    21
                    $GLOBALS['replaced'][$words] = 1;

    22
                }

    23
            // }

    24
        }

    25
        else

    26
        {

    27
            $string = str_replace($words, $result, $string);

    28
        }

    29
        return $pre.$string;

    30
    }




    会员购买:>> 点击购买 << | 魔扣币购买:>> 点击购买 <<
    承接业务:服务器代维丨网站托管丨SEO
    联系客服:微信:morko-net | QQ:1367681973

    该用户从未签到

    0

    主题

    285

    回帖

    570

    积分

    高级魔扣

    Rank: 4

    魔扣币
    285
    贡献
    285
    威望
    0
    发表于 2018-11-20 09:27:28 | 显示全部楼层
    时间冲不淡真情的酒,距离拉不开祝福的手,无论季节怎样改变,魔扣源码论坛祝福的心依旧;让阳光普照你所有的日子,让鲜花开满人生的旅程。祝好朋友:一生幸福,快乐无限!

    该用户从未签到

    0

    主题

    220

    回帖

    440

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    220
    贡献
    220
    威望
    0
    发表于 2019-5-7 15:36:22 来自手机 | 显示全部楼层
    多谢分享,顶一下',

    该用户从未签到

    2

    主题

    247

    回帖

    497

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    248
    贡献
    248
    威望
    0
    发表于 2019-8-9 21:04:18 来自手机 | 显示全部楼层
    前排,哇咔咔

    该用户从未签到

    0

    主题

    246

    回帖

    495

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    249
    贡献
    249
    威望
    0
    发表于 2020-3-31 17:19:15 来自手机 | 显示全部楼层
    泡一壶香茶,备一壶美酒,恰如我们的友情天长地久!茶香回甘酒甜绵绵,遥远的距离无法隔断彼此的牵挂!愿这浓浓的茶香甜甜美酒,带着深深的思念,送到你的身边,魔扣源码论坛祝福你快乐幸福平安!

    该用户从未签到

    1

    主题

    279

    回帖

    559

    积分

    高级魔扣

    Rank: 4

    魔扣币
    279
    贡献
    279
    威望
    0
    发表于 2020-9-11 18:56:25 | 显示全部楼层
    没人回帖。。。我来个吧
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表