实现PJBlog3关键词识别替换不区分大小写的方法



如上图所示,PJBlog3后台的关键词功能可以为博文中一些特定的关键词加上链接,从SEO角度来说,这对做站内链接极有帮助,但经实际测试,添加上图关键词后,只能实现替换博文中出现的关键词asp.net,而对ASP.NET、asp.NET就失效了,也就是说,PJBlog3替换的时候是区分大小写的,查看了相关代码后,最终解决了该问题。

实现PJBlog3关键词识别替换不区分大小写的方法

打开common/ubbcode.asp文件,找到如下代码:

'-----------关键词识别----------------
If AutoKEY = 1 Then
    Dim log_Keywords, log_KeywordsContent
    For Each log_Keywords IN Arr_Keywords
        log_KeywordsContent = Split(log_Keywords, "$|$")
        If log_KeywordsContent(3)<>"None" Then
            strContent = Replace(strContent, log_KeywordsContent(1), "<a href="""&log_KeywordsContent(2)&""" target=""_blank""><img src=""images/keywords/"&log_KeywordsContent(3)&""" border=""0"" alt=""""/> "&log_KeywordsContent(1)&"</a>")
        Else
            strContent = Replace(strContent, log_KeywordsContent(1), "<a href="""&log_KeywordsContent(2)&""" target=""_blank"">"&log_KeywordsContent(1)&"</a>")
        End If
    Next
End If

修改为:

'-----------关键词识别----------------
If AutoKEY = 1 Then
    Dim log_Keywords, log_KeywordsContent
    Dim regEx
    SET regEx = new RegExp
    'regEx.Pattern = "(s)$"
    regEx.IgnoreCase = True
    regEx.Global = True
    For Each log_Keywords IN Arr_Keywords
        log_KeywordsContent = Split(log_Keywords, "$|$")
        regEx.Pattern = "("&log_KeywordsContent(1)&")"
        If log_KeywordsContent(3)<>"None" Then
            strContent = regEx.Replace(strContent, "<a href="""&log_KeywordsContent(2)&""" target=""_blank""><img src=""images/keywords/"&log_KeywordsContent(3)&""" border=""0"" alt=""""/>$1</a>")
        Else
            strContent = regEx.Replace(strContent, "<a href="""&log_KeywordsContent(2)&""" target=""_blank"">$1</a>")
        End If
    Next
    SET regEx = Nothing
End If

后记

虽然Replace函数最后一个参数也能解决大小写匹配的问题:Replace(str1,str2,1,-1,1),但是经它替换后,原先博文内容中的ASP.NET、asp.NET都统一成了小写asp.net,不太完美,所以改用正则来替换。

本次测试使用PJBlog版本为PJBlog3 v3.1.6.227。

评论: 0 | 引用: 0 | 查看次数: 5956
发表评论
登录后再发表评论!