JS批量替换内容中关键词为超链接


Posted in Javascript onFebruary 20, 2017

懂点seo的人都知道要给内容中关键词加上链接,形成站内锚文本链接,这对seo有很大的帮助。

思路就是在数据库中录入若干个关键词和关键词对应的链接,当然链接可以根据关键词的id自动生成,或者直接用关键词作为链接参数,如?tag=1、?kw=关键词。

这个问题不是简单的一个批量replace那么简单,要考虑到已经存在的超链接,不能将里面的文字再次替换为超链接,还有就是图片的alt属性,或者其他标签的title属性,里面的文字也不该被替换。

见下面的HTML代码:

【<a href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" >九寨沟概要</a>】九寨沟位于四川省阿坝州九寨沟县境内,5A景点,世界自然遗产,有"五绝"之景色,我感到最绝的是海子,此生不能不去的景区。一年四季适合游,秋天是最美的。
<img src="" alt="九寨沟图片" title="九寨沟图片" />

这种情况你不能直接将九寨沟替换为超链接啊,不然第一个链接就会被替换为链接中包含链接,然后是图片上的alt和title也替换了一个链接上去,这肯定是不符合HTML规范的。

情景一:排除属性中的关键词

匹配的正则为:关键词[^<]*>,所以排除这个关键词的正则为:关键词?!([^<]*>)。

情景二:排除链接中的关键词

匹配的正则为:关键词[^<]*<\/a>,所以排除这个关键词的正则为:关键词?!([^<]*<\/a>)。

整合两种情况的结果为:var reg=/关键词(?!([^<]*>)|([^<]*<\/a>))/ig;

废话不多说,最后给出一个完整的批量替换实例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="content">
【<a href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" >九寨沟概要</a>】九寨沟位于四川省阿坝州九寨沟县境内,5A景点,世界自然遗产,有"五绝"之景色,我感到最绝的是海子,此生不能不去的景区。一年四季适合游,秋天是最美的。
<img src="" alt="九寨沟图片" title="九寨沟图片" />
</div>
<hr />
<div id="new">
</div>
<script>
var c=document.getElementById("content").innerHTML;
//var reg=/九寨沟(?!([^<]*>)|([^<]*<\/a>))/ig;
var json=[
  {'key':'九寨沟','url':'/九寨沟/'}
  ,{'key':'景点','url':'/景点/'}
  ,{'key':'景区','url':'/景区/'}
 ];
var reg;
for(var i=0;i<json.length;i++){
 var j=json[i];
 reg=new RegExp(j.key+"(?!([^<]*>)|([^<]*<\/a>))","ig");
 c = c.replace(reg,"<a href='"+j.url+"'>"+j.key+"</a>");
}
document.getElementById("new").innerHTML=c;
</script>
</body>
</html>

替换后的效果:

JS批量替换内容中关键词为超链接

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
在VS2008中使用jQuery智能感应的方法
Dec 30 Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 Javascript
将查询条件的input、select清空
Jan 14 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
js创建jsonArray传输至后台及后台全面解析
Apr 11 Javascript
Bootstrap Table使用方法解析
Oct 19 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
JavaScript数组去重的6个方法
Jan 21 Javascript
echarts学习笔记之图表自适应问题详解
Nov 22 Javascript
Angular脚手架开发的实现步骤
Apr 09 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 Javascript
详解vuex之store源码简单解析
Jun 13 Javascript
网页中右键功能的实现方法之contextMenu的使用
Feb 20 #Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 #Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 #Javascript
Bootstrap table右键功能实现方法
Feb 20 #Javascript
BootstrapTable refresh 方法使用实例简单介绍
Feb 20 #Javascript
Bootstrap table 定制提示语的加载过程
Feb 20 #Javascript
bootstrapValidator 重新启用提交按钮的方法
Feb 20 #Javascript
You might like
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
vue项目实现github在线预览功能
2018/06/20 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
vue配置接口域名方法总结
2019/05/12 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
利用Python学习RabbitMQ消息队列
2015/11/30 Python
简析Python的闭包和装饰器
2016/02/26 Python
Python selenium 三种等待方式解读
2016/09/15 Python
python发送邮件实例分享
2017/07/28 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
几道Java和数据库的面试题
2013/05/30 面试题
如何理解transaction事务的概念
2015/05/27 面试题
网站出售协议书范文
2014/10/10 职场文书
清洁工个人工作总结
2015/03/05 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
就业导师推荐信范文
2015/03/27 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers