文章关键字替换带链接需要注意的两个问题

时间:2010-02-25 12:18:00 

第一步一般是建立一个关键字替换表 如 id keyword url 等字段

第二步是文章显示时把【文章】内容和【关键字替换表】对应的关键字替换成“<a href="[url字段]" target="_blank">[keyword字段]</a>”

如【关键字替换表】
海河 http://www.zhouhaihe.com/blog/
海河工作室 http://www.zhouhaihe.com/

替换内容: 海河工作室

替换结果为 <a href="http://www.zhouhaihe.com/blog/" target="_blank">海河</a>工作室

这个显然不是我们想得到的结果

解决方法:替换顺序需要调整为,先长后短。即先替换“海河工作室”再替换“海河”

替换结果为 <a href="http://www.zhouhaihe.com/" target="_blank"><a href="http://www.zhouhaihe.com/blog/" target="_blank">海河</a>工作室<a>

这个乱套了!第二次把a标签之间的文字替换掉了。

解决方法:替换时不替换a标签之间的文字,避免重复替换。

现在把我写的代码复制出来供大家参考

调用代码:
 

文章内容=keywords_link(文章内容)


替换函数:
 


'关键字
function keywords_link(byval str)
 dim rs
 '问题1解决办法
 set rs=conn.execute("select * from [关键字替换表] order by len(keyword字段) desc")
 while not rs.eof
 str=p_replace(str,rs("keyword字段"),"<a href="""&rs("url字段")&""" target=""_blank"" >"&rs("keyword字段")&"</a>")
 rs.movenext
 wend
 rs.close
 set rs=nothing
 keywords_link=str
end function
 '问题2解决函数 避免重复替换
function p_replace(byval content,byval asp,byval htm)
dim Matches,objRegExp,strs,i
strs=content
Set objRegExp = New Regexp'设置配置对象
objRegExp.Global = True'设置为全文搜索
objRegExp.IgnoreCase = True
objRegExp.Pattern = "(\<a[^<>]+\>.+?\<\/a\>)|(\<img[^<>]+\>)"'
Set Matches =objRegExp.Execute(strs)'开始执行配置
'替换正则表达式
i=0
Dim MyArray()
For Each Match in Matches
ReDim Preserve MyArray(i)
MyArray(i)=Mid(Match.Value,1,len(Match.Value))
strs=replace(strs,Match.Value,"<"&i&">")
i=i+1
Next
'没有正则时候
if i=0 then
 content=replace(content,asp,htm)
 p_replace=content
 exit function
end if
'特殊字符替换
strs=replace(strs,asp,htm)
'替换回去
for i=0 to ubound(MyArray)
strs=replace(strs,"<"&i&">",MyArray(i))
next
p_replace=strs
end function
标签:替换,关键字,正则表达式
0
投稿

猜你喜欢

  • 一个div层打开显示效果 js

    2008-05-19 12:35:00
  • tab(标签)在使用时的禁忌

    2009-04-16 13:06:00
  • 实现SQL Server到DB2连接服务器很简单

    2010-08-08 15:24:00
  • 使用 createProcessingInstruction 方法不能输出 encoding 的解决方法

    2009-03-10 18:22:00
  • 自定义数据库自动编号初始值和步进值

    2009-05-19 10:00:00
  • Google Map API 基本使用方法

    2008-06-15 06:51:00
  • Sql Server 数据库超时问题的解决方法

    2009-01-13 14:11:00
  • 在不能中寻找可能 QZONE个性相册设计的始末

    2009-07-13 12:27:00
  • MySQL中XML数据的XPath支持

    2009-12-15 21:57:00
  • Z-Blog实现摘要图文混排效果的方法

    2009-02-23 13:54:00
  • PHP curl get post 请求的封装函数示例【get、post、put、delete等请求类型】

    2023-05-25 01:24:18
  • 巧用Dreamweaver MX设计导航栏特效

    2009-07-10 13:17:00
  • Js的MessageBox

    2008-05-16 10:25:00
  • 了解WEB页面工具语言XML(三)支持工具

    2008-09-05 17:18:00
  • 天气预报调用代码

    2008-11-18 15:59:00
  • 客户端数据存储–超越cookies

    2008-01-15 13:01:00
  • SQL Server数据库对于应用程序的关系

    2010-09-08 09:42:00
  • javascript判断一个元素是否数组

    2009-07-31 12:48:00
  • 基于Oracle的面向对象技术入门基础简析开发者网络Oracle

    2010-07-18 12:57:00
  • asp图片加水印的功能代码

    2011-02-05 11:02:00
  • asp之家 网络编程 m.aspxhome.com