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 相关文章推荐
javascript网页关闭时提醒效果脚本
Oct 22 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
May 06 Javascript
js showModalDialog参数的使用详解
Jan 07 Javascript
如何调试异步加载页面里包含的js文件
Oct 30 Javascript
AngularJS的表单使用详解
Jun 17 Javascript
seajs中最常用的7个功能、配置示例
Oct 10 Javascript
利用nginx + node在阿里云部署https的步骤详解
Dec 19 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
使用vue开发移动端管理后台的注意事项
Mar 07 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
PHP大神的十大优良习惯
2016/09/14 PHP
php实例化一个类的具体方法
2019/09/19 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
Vue.js图片预览插件使用详解
2018/08/27 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
Hadoop中的Python框架的使用指南
2015/04/22 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
python logging通过json文件配置的步骤
2020/04/27 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
公司司机岗位职责
2014/02/07 职场文书
教师自我反思材料
2014/02/14 职场文书
检举信的格式及范文
2014/04/04 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
小学三年级作文之写景
2019/11/05 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android