使用 js替换网页中的关键词为链接

要求把一段html脚本中的疾病名添加到疾病库的链接,只添加一次,要避开超链接或图片链接。

最初是用的    str.replace('糖尿病', '<a href=...>糖尿病</a>');

结果找了半天,愣是没找到替换后的效果,原来是有个图片的title中包含糖尿病,被它捷足先登了。

因此要把<a>链接、<img>标签避开,但<p><div>等标签不用避开

上图:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1.    
  2.  s = "<a href='http://www.yx129.com/bingli/1_310.html'>先看一个糖尿病病历</a> <br/>" +  
  3.          "<IMG style='vertical-align:middle' width=40 src='http://yx129.com/api/minisite/images/skin/green/doctor_thumb_100.png'/>糖尿病王医生<br/>" +  
  4.          "糖尿病简介<br/>糖尿病发病率<br/><a href='baidu.com'>糖尿病症状<br/>" +  
  5.          "</a> ";  
  6.  document.write(s);  
  7.    
  8.  a_reg = /<a(.*?)<\/a>/i;  //a链接的正则  
  9.  img_reg = /<img(.*?)>/i; //图片链接的正则,防止图片的title,alt什么的属性包括疾病名而误替换  
  10.  var ix = 0;  
  11.    
  12.  var arr_ele = [];  
  13.  //先把<a><img>2类标签全部替换为{{index}},然后处理剩下的文字,再把<a><img>标签的内容替换回去  
  14.  while(true){  
  15.     if(-1 == s.toLowerCase().indexOf('<a ') && -1 == s.toLowerCase().indexOf('<img ')){  
  16.         break;  
  17.     }  
  18.     a_match = s.match(a_reg);  
  19.     if(a_match){  
  20.         //console.log(a_match);  
  21.         arr_ele.push(a_match[0]);  
  22.         s = s.replace(a_reg, '{{' +ix+ '}}');  
  23.         ix++;  
  24.     }  
  25.     img_match = s.match(img_reg);  
  26.     if(img_match){  
  27.         //console.log(img_match);  
  28.         arr_ele.push(img_match[0]);  
  29.         s = s.replace(img_reg, '{{' +ix+ '}}');  
  30.         ix++;  
  31.     }  
  32.     console.log(s);  
  33. }  
  34.   
  35. document.write('<br>-------------------------<br>第1步:把链接替换为{{index}}后:<br>'+s+'<br>');  
  36.   
  37. s = s.replace(/糖尿病/i, "<a target='_blank' href='http://jibing.yx129.com/tnb'>糖尿病</a>");  
  38.   
  39. document.write('<br>-------------------------<br>第2步:添加疾病库链接后:<br>'+s+'<br>');  
  40.   
  41. if(arr_ele){  
  42.     for(var i=0; i<arr_ele.length; i++){  
  43.         s = s.replace('{{' + i + '}}', arr_ele[i]);  
  44.     }  
  45. }  
  46.   
  47. document.write('<br>-------------------------<br>第3步:把链接替换回去之后:<br>'+s+'<br>'); 

转载于:https://www.cnblogs.com/xiaochao12345/p/4089293.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

凡人修仙传显示无法连接服务器,《凡人修仙传》网络异常及橙色BOSS补偿说明...

【网络异常及橙色BOSS补偿说明】亲爱的玩家朋友&#xff1a;《凡人修仙传》所有服务器由于网络异常在今晚(12月6日晚)陆续出现了延迟与宕机。对广大玩家造成了影响&#xff0c;我们深表歉意&#xff01;网络异常还对部分大区的橙色BOSS造成了影响&#xff0c;导致活动没有顺利进…

白屏优化_今日头条品质优化 图文详情页秒开实践

背景作为一个内容类应用&#xff0c;看新闻读资讯一直是头条用户的核心需求&#xff0c;页面的打开速度直接关系到用户使用头条的核心体验&#xff0c;在头条中&#xff0c;为了更多的承载足够丰富的样式和逻辑下保持多端体验的统一&#xff0c;详情页的内容我们是通过 WebView…

JPA字段长度 Mysql数据库

2019独角兽企业重金招聘Python工程师标准>>> 今天有个表字段超长了&#xff0c;默认是255&#xff0c;当时随手把表结构改成3600。然后晚上回来研究JPA控制的字段长度。 实验一&#xff1a; Column(length50, nullabletrue) private String valueText; 毫无疑问&…

JavaWeb学习----Cookie实现记住密码的功能

【声明】 欢迎转载&#xff0c;但请保留文章原始出处→_→ 生命壹号&#xff1a;http://www.cnblogs.com/smyhvae/ 文章来源&#xff1a;http://www.cnblogs.com/smyhvae/p/4096807.html 【正文】 本文主要内容&#xff1a; •1、什么是Cookie •2、Cookie带来的好处 •3、Co…

【学习笔记】在storyboard中给TabViewController添加tab页面

正题&#xff1a;1、首页动态拖一个UIViewController到storyboard中2、然后右键UITabBarController在木manaul栏右侧的加号连线新的UITabViewController就成功添加完毕转载于:https://blog.51cto.com/3048821/1682420

使用matlab画半透明椭圆

先上最终效果图&#xff1a; 本来是想直接用scatter和alpha来画的&#xff0c;结果在尝试以下代码后&#xff0c;发现无法显示透明效果 scatter(rand(1000,1),rand(1000,1), filled); alpha(0.5) 具体原因可以参考stackoverflow&#xff08;http://stackoverflow.com/questions…

双y轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...

关于图表的组合排版&#xff0c;在之前的微信文章中介绍过很多常规的方法&#xff0c;比如《绘制复杂组合图表的独家秘笈分享》、《如何用Graphpad Prism绘制超复杂组合图&#xff1f;》、《如何用Origin完成图表排版&#xff1f;》等。可是&#xff0c;有小伙伴就问了&#xf…

小米5s的位置服务器,小米手机NFC在哪里?告诉你小米手机NFC位置(包括小米5/5s/6/MIX2/Note3)...

NFC功能的普及为智能手机锦上添花&#xff0c;闪付、充值交通卡、模拟门卡、模拟交通卡...NFC的功能越来越强大了&#xff0c;日常生活中需要用到的地方也越来越多了。可问题往往会在这个时候被发现&#xff0c;许多人在使用NFC的时候总是失败。比如说充值交通卡吧&#xff0c;…

微信转发的文件服务器留存吗,微信转发这种视频会感染病毒泄露隐私?网警的查证结果来了...

原标题&#xff1a;微信转发这种视频会感染病毒泄露隐私&#xff1f;网警的查证结果来了最近网上流传一条“紧急通知”&#xff0c;称微信上流传着一些必须转发后才能继续观看的视频&#xff0c;这些视频其实被内植病毒&#xff0c;一旦转发&#xff0c;机主隐私立马被泄露。真…

微软Connect教程系列--自动生成增删改查页面工具介绍(二)

本章课程描述了vs2015的三个特点&#xff0c;其中主要将描述在vs2015下面&#xff0c;使用命令自动生成增删改查界面&#xff0c;具体如下&#xff1a; 1、web.config文件不在存在&#xff0c;用config.json替代&#xff0c;以适应支撑vs的插件化。 即config.json可以在项目中不…

PI数据库的使用-PI System Management Tools

1、PI连接管理器 2、标记搜索 3、当前值 转载于:https://www.cnblogs.com/jumahe/p/4107790.html

一种用css实现图片在父框中等比缩放并垂直居中的办法

一个网页中往往会有很多图片&#xff0c;而网站的编辑上传图片时可能并不一定按照为父框设定的那个宽高来传&#xff0c;这样图片往往会将父框撑开或者被父框截断。一种比较好的解决的办法是这样的&#xff1a; HTML代码结构&#xff1a; <div class"dimg"><…

CLR VIA

标题 状态 内容 什么是CLR? 什么是托管模块&#xff1f; 托管模块由什么组成&#xff1f; 。net代码的执行过程 http://www.cnblogs.com/aaa6818162/p/4726581.html http://www.cnblogs.com/kingmoon/archive/2012/07/16/2594459.html 为了执行程序&#xff0c;首…

jQuery表格排序总成-tablesorter

一个、进口单证<script type"text/javascript" src"js/jquery.js"></script> <script type"text/javascript" src"js/jquery.tablesorter.js"></script> <!-- 引入下面样式则表头出现排序图标。同一时候…

5渲染判断_云渲染怎么收费,5大云渲染平台实测,您选对了吗?

3DMAX云渲染平台都怎么收费&#xff1f;5大云渲染平台测试后才知道差距这么大&#xff0c;您用对了吗&#xff1f;本次共计测试了3个镜头&#xff0c;为了让大家很直观地感受各个平台渲染时间和费用上的对比&#xff0c;我整理了个表格&#xff0c;供大家自行参考和判断。若有疑…

Android工程的编译过程

现在很多人想对Android工程的编译和打包进行自动化&#xff0c;比如建立每日构建系统、自动生成发布文件等等。这些都需要我们对Android工程的编译和打包有一个深入的理解&#xff0c;至少要知道它的每一步都做了什么&#xff0c;需要什么环境和工具&#xff0c;输入和输出是什…

activiti 工作流设置并行审批_activity、jbpm5、snakerflow常用工作流审批流对比

# 审批流调研背景由于目前产品研发组支持的产品项目越来越多&#xff0c; 同时几乎每个项目都会有导出审批&#xff0c;流程流转等需求&#xff0c;本着提高开发效率和组件化的目的&#xff0c;调研和开发通用的工作流组件&#xff0c;为后面的项目和新的需求提供快速支持。主要…

Spring web应用最大的败笔

第一篇 介绍下IOC DI Spring主要是业务层框架&#xff0c;现在已经发展成为一个完整JavaEE开发框架&#xff0c;它的主要特点是IoC DI和AOP等概念的融合&#xff0c;强项在面向切面AOP。推出之初因为Ioc/AOP等新设计理念值得框架设计者学习&#xff0c;现在已经成为Java世界主流…

***PHP 去除换行符

PHP在不同的系统中&#xff0c;换行是不同的 Linux&#xff1a;\n Windows&#xff1a;\r\n mac&#xff1a;\r 所以去除回车换行的方法: 1.使用php定义好的变量&#xff08;比较好的方法&#xff0c;推荐&#xff09; $str str_replace(PHP_EOL, , $str); 2.使用str_replace …

01C语言的概述

一、计算机常识在学习C语言之前&#xff0c;先要了解一些计算机常识1.计算机只能识别0和1大家都知道&#xff0c;计算机要通电才能工作&#xff0c;说白了&#xff0c;它跟电视、洗衣机一样&#xff0c;都是电器。电器都有个共同的能力&#xff1a;懂得判断通电还是断电&#x…