赞助连接

赞助连接

阅 读 文 章

文本处理问题,如何对关键词高亮显示

[来源:网上转载 (CSDN转载) | 作者:网友(Xudoz) | 时间:2008-09-13 | 浏览:人次 ]

一般的搜索类网站,对搜索结果中的关键词高亮显示,后台如何把需要高亮的地方标记出来给告诉前台?  
  目前直接用<b>...</b>似乎不是个好办法。  
  假如这些文本里面本身存在<b></b>这样的字符,变成也高亮显示出来了。
用正则!  
  <html>  
  <body>  
  <textarea   id="textarea1"   style="height:240;width:960">  
  前部分关键词后部分                                                                                         //替换  
  <a   href=http://topic.csdn.net/t/20061124/13/"#">前部分关键词后部分</a>                                                                             //不替换,包含在a中  
  <p><a   href=http://topic.csdn.net/t/20061124/13/"#">前部分关键词后部分</a></p>                                                               //不替换,包含在a中  
  <div><p><a   href=http://topic.csdn.net/t/20061124/13/"#">前部分关键词后部分</a></p></div>                                         //不替换,包含在a中  
  <span><div><p><a   href=http://topic.csdn.net/t/20061124/13/"#">前部分关键词后部分</a></p></div></span>               //不替换,包含在a中  
  <a><span><div>前部分关键词后部分</div></span></a>                                               //不替换,包含在a中  
  <font><a   href=http://topic.csdn.net/t/20061124/13/"#">前部分关键词后部分</a>前部分关键词后部分</font>               //只替换第二部分的关键词  
  <span>前部分关键词后部分<div>前部分关键词后部分</div></span>                   //两部分都要替换  
   
  <img   alt="前部分关键词后部分"   />                                                                                 //不替换,包含在img中  
  <span><img   alt="前部分关键词后部分"   /></span>                                                       //不替换,包含在img中  
  <div><span><img   alt="前部分关键词后部分"   /></span></div>                                 //不替换,包含在img中  
   
  <script>alert("前部分关键词后部分");</script>                                                       //不替换,包含在script中  
  <span><script>alert("前部分关键词后部分");</script></span>                             //不替换,包含在script中  
  <div><span><script>alert("前部分关键词后部分");</script></span></div>       //不替换,包含在script中  
  <span><div><script>alert("前部分关键词后部分");</script></div></span>       //不替换,包含在script中  
   
  <div>前部分关键词后部分</div>                                                                                       //替换  
  <span><div>前部分关键词后部分</div></span>                                                             //替换  
  </textarea>  
  <textarea   id="textarea2"   style="height:240;width:960"></textarea>  
  <script>  
  var   str=document.getElementById("textarea1").value  
  var   keyword   =   "关键词";  
  var   myreplace="@#@@"  
  var   re   =   new   RegExp("(.*)?(<a.*>)(.*)"+keyword+"(.*)(<\/a>.*)","ig");  
  str   =   str.replace(re,"$1$2$3"+myreplace+"$4$5");  
  var   re   =   new   RegExp("(.*)?(<script.*>)(.*)"+keyword+"(.*)(<\/script>.*)","ig");  
  str   =   str.replace(re,"$1$2$3"+myreplace+"$4$5");  
  var   re   =   new   RegExp("(.*)?(<img.*)(.*)"+keyword+"(.*)(\/>.*)","ig");  
  str   =   str.replace(re,"$1$2$3"+myreplace+"$4$5");  
  var   re=   new   RegExp("(.*?)"+keyword+"(.*?)","ig");  
  str   =   str.replace(re,"$1<b>"+keyword+"</b>$2");  
  var   re=   new   RegExp("(.*?)"+myreplace+"(.*?)","ig");  
  str   =   str.replace(re,"$1"+keyword+"$2");  
   
  document.getElementById("textarea2").value   =str  
   
  </script>  
  </body>  
  </html>  
  我测试通过了,你看看还有没有其他的特例。
楼上你这个可是要复杂多了,是在前台替换整个HTML了吧。  
  我比你简单多了,后台搜索数据交给前台的时候考虑怎么做就可以了。没有那么多的HTML  
  需要考虑。  
  说白了,我前台是要把所有HTML转义掉使之不被浏览器当作HTML来解释的,唯独<b></b>  
  有特殊意义,假如后台以<b></b>的形式标记高亮的话。
那你就把目前用<b></b>来标示的用特殊的任何组合来标示,以不发生冲突。
str=str.replace(str2,"<span   class=aa>"&str2&"</span>")  
   
  str:原文  str2:高亮文字  aa:高亮样式
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 显示 关键词 如何 处理 问题 文本 部分 替换 // 包含

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.