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弹出关闭遮罩层实例
Aug 06 Javascript
jquery做的一个简单的屏幕锁定提示框
Mar 26 Javascript
ie8模式下click无反应点击option无反应的解决方法
Oct 11 Javascript
jQuery.position()方法获取不到值的安全替换方法
Mar 13 Javascript
JavaScript判断是否为数字的4种方法及效率比较
Apr 01 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
Dec 03 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
Oct 27 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
Vue中使用clipboard实现复制功能
Sep 05 Javascript
js for终止循环 跳出多层循环
Oct 04 Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 Javascript
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 Vue.js
网页中右键功能的实现方法之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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
PHP默认安装产生系统漏洞
2006/10/09 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
js 动态修改css文件的方法
2014/08/05 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python的即时标记项目练习笔记
2014/09/18 Python
python 读取文件并替换字段的实例
2018/07/12 Python
带你认识Django
2019/01/15 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
python读取xml文件方法解析
2020/08/04 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
母亲节演讲稿
2014/05/27 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
关于环保的广播稿
2015/12/17 职场文书
javascript Number 与 Math对象的介绍
2021/11/17 Javascript
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫