多关键字加亮的问题

yabisi 2009-08-12 04:48:47
内容很长,从数据库取出,有些关键字要加亮,不全部显示,只显示关键字前后各5个字符,比如关键字:我 你 他,显示如下:

...测试测俄方测试测俄方...测试测俄方测试测俄方...测试测俄方测试测俄方...

但两个关键字之间不超过5个字符时要显示如下:

...测试测俄方测试测测试测俄方...测试测俄方测试测俄方...

若关键字在开始或结尾时前后不显示...,如:

测试测俄方...测试测俄方测试测俄方...测试测俄方测试测俄方...


请问这样的加亮关键字怎么用asp实现!!谢谢!!!
...全文
67 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yabisi 2009-08-25
4楼的结果很接近了,再考虑考虑!!
回复
yabisi 2009-08-13
老大!我说的可不是这个意思,我上面说的现实方式要实现,不是单纯的加亮关键字!!
回复
黑心 2009-08-13
办法:
首先,用SQL语句查多关键字的记录(这语句够麻烦)。

然后,三个字符串截取条件。(够犀利)
“只显示关键字前后各5个字符”
“两个关键字之间不超过5个字符时连续显示”
“若关键字在开始或结尾时前后不显示...”

结合起来方可完成巨大的工程。(够麻烦)
回复
tr="1232测试测俄方我测试测俄方gg测试测俄方你测试测俄方43645测试测俄方他测试测俄方ddgfd "
response.Write WordReplace(str,"我|你|他")
function lmid(str)
if len(str)>5 then
lmid="..."&right(str,5)
else
lmid=str
end if
End Function

function WordReplace(strContent,word)
Set objRegExp=New RegExp
Set Reg=New RegExp
objRegExp.IgnoreCase=true
objRegExp.Global=true
objRegExp.Pattern="([^" & word & "]+)(" & word & ")"
Reg.IgnoreCase=false
Reg.Global=false
set Matches=objRegExp.Execute(strContent)
set objRegExp=nothing
if Matches.Count<>0 then
For Each Match in Matches
Reg.Pattern=""&Match.SubMatches(0)&"(" & word & ")"
str=Reg.replace(strContent,""&lmid(Match.SubMatches(0))&"<span style=""color:#ff0000"">$1</span>")
next
end if
WordReplace=str
set Reg=nothing
End Function

目前只做出到如此一步,再想想有没有办法完善
回复
昔梦无痕 2009-08-13
你说的是类似百度那样的搜索结果页面吗?标题和简介都有加红?
看看下面这段!如果是别忘记加分。


'搜索结果标题
xw_coname=replace(Rs("title"),word,"<font color=red>"&word&"</font>")
'搜索结果截取简介
xw_cont=trim(Rs("content"))
'搜索结果处理
if instr(xw_cont,word) then
a=len(xw_cont)
b=instr(xw_cont,word)
if b<50 then c=left(xw_cont,b+1) else c="..."&mid(xw_cont,b-50,55)
if a-(b+len(word))<50 then d=right(xw_cont,a-(b+len(word))+1) else d=mid(xw_cont,b,50)&"..."
xw_coms=c&d
else
xw_coms=Trim(left(xw_cont,100))&"..."
end if
xw_coms=replace(xw_coms,word,"<font color=red>"&word&"</font>")
回复
凡夫与俗子 2009-08-12
第一种:replace

result= replace(result,search,"<font color=red>"&search&"</font>")  


第二种:正则

<%
'用正则表达式突出显示字符串中查询到的单词的函数
Function BoldWord(strContent,word)
if IsNull(strContent) then exit function
dim objRegExp
Set objRegExp=new RegExp
objRegExp.IgnoreCase =true
objRegExp.Global=True

objRegExp.Pattern="(" & word & ")"
strContent=objRegExp.Replace(strContent,"<span style=""color:#ff0000"">$1</span>" )

Set objRegExp=Nothing
BoldWord=strContent
End Function
%>
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告