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 相关文章推荐
YUI的Tab切换实现代码
Apr 11 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
解决Jquery鼠标经过不停滑动的问题
Mar 03 Javascript
js的for in循环和java里foreach循环的区别分析
Jan 28 Javascript
JavaScript获取表单enctype属性的方法
Apr 02 Javascript
JavaScript模版引擎的基本实现方法浅析
Feb 15 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
May 21 Javascript
vue如何从接口请求数据
Jun 22 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
Jul 31 Javascript
使用vue构建移动应用实战代码
Aug 02 Javascript
spirngmvc js传递复杂json参数到controller的实例
Mar 29 Javascript
php中and 和 &amp;&amp;出坑指南
Jul 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
在线竞拍系统的PHP实现框架(二)
2006/10/09 PHP
很让人受教的 提高php代码质量36计
2012/09/05 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
php数组去重复数据示例
2014/02/25 PHP
小谈php正则提取图片地址
2014/03/27 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
javascript Math.random()随机数函数
2009/11/04 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
python list转矩阵的实例讲解
2018/08/04 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
flask开启多线程的具体方法
2020/08/02 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
计算机专业自我鉴定
2013/10/15 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
国培远程培训感言
2014/03/08 职场文书
cf战队收人广告词
2014/03/14 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
2016年记者节感言
2015/12/08 职场文书
2019暑假学生安全口号
2019/06/27 职场文书