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 相关文章推荐
Jquery下attr和removeAttr的使用方法
Dec 28 Javascript
jQuery过滤选择器:not()方法使用介绍
Apr 20 Javascript
js用typeof方法判断undefined类型
Jul 15 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
Sep 15 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
Angular2内置指令NgFor和NgIf详解
Aug 03 Javascript
AngularJS表单详解及示例代码
Aug 17 Javascript
JS 获取HTML标签内的子节点的方法
Sep 21 Javascript
利用Node.js对文件进行重命名
Mar 12 Javascript
js微信应用场景之微信音乐相册案例分享
Aug 11 Javascript
在React项目中使用Eslint代码检查工具及常见问题
Oct 10 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
再说下636单管机
2021/03/02 无线电
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
Opacity.js
2007/01/22 Javascript
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
给领导的检讨书
2014/02/16 职场文书
市场营销工作计划书
2014/09/15 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
2014年团工作总结
2014/11/27 职场文书
详解Redis瘦身指南
2021/05/26 Redis