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 相关文章推荐
Prototype中dom对象方法汇总
Sep 17 Javascript
[推荐]javascript 面向对象技术基础教程
Mar 03 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
Feb 10 Javascript
Node.js中对通用模块的封装方法
Jun 06 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
JavaScript设计模式开发中组合模式的使用教程
May 18 Javascript
JavaScript设计模式之单体模式全面解析
Sep 09 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
Jul 15 Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 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
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
PHP7变量处理机制修改
2021/03/09 PHP
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
python实现教务管理系统
2018/03/12 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
Python实现八皇后问题示例代码
2018/12/09 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
python如何调用java类
2020/07/05 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
年度考核评语
2014/01/19 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
高三复习计划
2015/01/19 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书