木子屋 Dnawo's BLOG

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

👤 dnawo 📅 2011-11-20 👁 7946 👍 0 💬 0 🔄 来源:本站原创
图片

如上图所示,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)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 WinForm未能加载文件或程序集SharpZipLib:找到的… 下一篇 → 域名选择的几个思路及相关疑问