目前直接用<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标签: | 显示 关键词 如何 处理 问题 文本 部分 替换 // 包含 |
注册
个人空间
