JS批量替换内容中关键词为超链接

发布时间 - 2026-01-10 23:09:54    点击率:

懂点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  # 批量替换  # 替换关键词  # Node.js读写文件之批量替换图片的实现方法  # js replace(a  # b)之替换字符串中所有指定字符的方法  # JS实现添加  # 替换  # 删除节点元素的方法  # js正则表达式replace替换变量方法  # javascript字符串替换函数如何一次性全部替换掉  # js中字符替换函数String.replace()使用技巧  # javascript中使用replaceAll()函数实现字符替换的方法  # js使用正则实现ReplaceAll全部替换的方法  # 用JS实现HTML标签替换效果  # JS替换字符串中字符即替换全部而不是第一个  # 关键词  # 九寨  # 则为  # 的是  # 不去  # 超链接  # 最美  # 境内  # 秋天  # 就会  # 阿坝州  # 第一个  # 站内  # 我感到  # 两种  # 这个问题  # 的人都  # 这对  # 考虑到  # 这种情况 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速使用云服务器搭建个人网站?  Android使用GridView实现日历的简单功能  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  详解jQuery中基本的动画方法  如何在阿里云香港服务器快速搭建网站?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel如何发送系统通知?(Notification渠道示例)  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel怎么在Controller之外的地方验证数据  Android滚轮选择时间控件使用详解  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel如何实现API速率限制?(Rate Limiting教程)  Laravel如何处理异常和错误?(Handler示例)  Laravel如何实现一对一模型关联?(Eloquent示例)  如何撰写建站申请书?关键要点有哪些?  高端企业智能建站程序:SEO优化与响应式模板定制开发  怎样使用JSON进行数据交换_它有什么限制  android nfc常用标签读取总结  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何为不同团队 ID 动态生成多个“认领值班”按钮  网站建设保证美观性,需要考虑的几点问题!  做企业网站制作流程,企业网站制作基本流程有哪些?  大同网页,大同瑞慈医院官网?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  制作旅游网站html,怎样注册旅游网站?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  新三国志曹操传主线渭水交兵攻略  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  用v-html解决Vue.js渲染中html标签不被解析的问题  如何快速搭建FTP站点实现文件共享?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Python3.6正式版新特性预览  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何快速生成橙子建站落地页链接?  Python文件流缓冲机制_IO性能解析【教程】  如何在阿里云服务器自主搭建网站?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  大型企业网站制作流程,做网站需要注册公司吗?  如何在建站主机中优化服务器配置?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  JS弹性运动实现方法分析  如何在Tomcat中配置并部署网站项目?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧