打印本文 打印本文 关闭窗口 关闭窗口
[asp]关键词只替换一次的写法
作者:武汉SEO闵涛  文章来源:本站原创  点击数2403  更新时间:2010/8/3 12:57:21  文章录入:mintao  责任编辑:mintao
[asp]关键词只替换一次的写法,

了解SEO的人,都会对站内链接感兴趣,如何做好站内链接也是一门学问,但不属于本文的讨论范畴,本文旨在于介绍一种替换的方法,让站内链接更方便且更加合理…

1, 为了统一管理站内链接的文本的链接地址,我们需要一个表,结构如下:

[KeyWords] ID Name Url

这个表里将记录所有文本和所指向链接的对应关系

2, 默认已经取得内容为 Content

以下是代码片段:

Dim xyContent : xyContent = ""
If Content<> "" Then  
            Dim RsSite,SqlSite
            Set RsSite = Server.CreateObject("Adodb.RecordSet")
            SqlSite = "Select * From [KeyWords] Order By Len(Name) DESC"
            RsSite.Open SqlSite,Conn,1,1
            Do While Not RsSite.Eof
                xyContent = Replace(Content,RsSite("Name"),"##"&RsSite("ID")&"##",1,1)
            RsSite.MoveNext
            Loop
            RsSite.Close
            Set RsSite = Nothing
            Set RsSite = Server.CreateObject("Adodb.RecordSet")
            SqlSite = "Select * From [KeyWords] Order By Len(Name) DESC"
            RsSite.Open SqlSite,Conn,1,1
            Do While Not RsSite.Eof
                xyContent = Replace(xyContent,"##"&RsSite("ID")&"##","<a href=’"&RsSite("Url")&"’ target=’_blank’>"&RsSite("Name")&"</a>",1,1)
            RsSite.MoveNext
            Loop
            RsSite.Close
            Set RsSite = Nothing
End If

红色字体部分:

Len(Name) DESC 目的是先替换长关键词,后替换短关键词,以不至于可能存在的包含关系出现替换错误的尴尬局面.

Replace(Content,RsSite("Name"),"##"&RsSite("ID")&"##",1,1)  目的是把所有匹配到的关键词的第一个替换成由##ID##组成的特殊字符组合,至于Replace函数的参数说明,如下:

Replace 函数

描述: 返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。
语法:
Replace(expression, find, replacewith[, compare[, count[, start]]])
Replace 函数的语法有以下参数:
参数:

expression 必选。 字符串表达式 包含要替代的子字符串。
find 必选。被搜索的子字符串。
replacewith 必选。用于替换的子字符串。
start 可选。expression 中开始搜索子字符串的位置。如果省略,默认值为 1。在和count 关联时必须用
count 可选。执行子字符串替换的数目。如果省略,默认值为 -1,表示进行所有可能的替换。在和 start 关联时必须用。
compare 可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,缺省值为 0 ,这意味着必须进行二进制比较。
设置:
compare 参数可以有以下值:
常数 值 描述
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文本比较。
返回值:
Replace 返回以下值:
如果 Replace 返回
expression 为零长度 零长度字符串 ("")。
expression 为 Null 错误。
find 为零长度 expression 的副本。
replacewith 为零长度 expression 的副本,其中删除了所有由 find 参数指定的内容。
start > Len(expression) 零长度字符串。
count 为 0 expression 的副本。
说明:
Replace 函数的返回值是经过替换(从由 start 指定的位置开始到 expression 字符串的结尾)后的字符串,而不是原始字符串从开始至结尾的副本。

      综合上述,便完成了一个只替换一次关键词的做法.

打印本文 打印本文 关闭窗口 关闭窗口