文章关键字替换带链接需要注意的两个问题
时间: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