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 相关文章推荐
表单(FORM)的一些实用效果代码
Mar 25 Javascript
ExtJs纵坐标值重复问题的解决方法
Feb 27 Javascript
JQuery页面地址处理插件jqURL详解
May 03 Javascript
理解Javascript的call、apply
Dec 16 Javascript
AngularJS 最常用的八种功能(基础知识)
Jun 26 Javascript
微信小程序实现顶部选项卡(swiper)
Jun 19 Javascript
jQuery实现的两种简单弹窗效果示例
Apr 18 jQuery
React为 Vue 引入容器组件和展示组件的教程详解
May 03 Javascript
JavaScript实现百度搜索框效果
Mar 26 Javascript
Vue项目中添加锁屏功能实现思路
Jun 29 Javascript
JavaScript实现点击切换验证码及校验
Jan 10 Javascript
关于vue-router-link选择样式设置
Apr 30 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
做一个有下拉功能的留言版
2006/10/09 PHP
php制作简单模版引擎
2016/04/07 PHP
php图片上传类 附调用方法
2016/05/15 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
js实现返回顶部效果
2017/03/10 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
Python logging模块学习笔记
2014/05/24 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
python文字转语音实现过程解析
2019/11/12 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
后勤部长岗位职责
2013/12/14 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
二年级作文之动物作文
2019/11/13 职场文书
导游词之日本富士山
2020/01/06 职场文书
Java存储没有重复元素的数组
2022/04/29 Java/Android