自动将文章中的链接转为超链接

最近在做一个论坛系统,使用了一下代码作为正文展示:

代码语言:javascript
复制
<div class="article-content">
    <?php echo $article['content']; ?>
</div>

这里用到的样式是“article-content”所以我直接在JS中对这个元素进行处理即可:

代码语言:javascript
复制
<script>
// 等待页面加载完成后执行
document.addEventListener("DOMContentLoaded", function() {
  // 获取文章内容元素
  var articleContent = document.querySelector(".article-content");

  // 正则表达式匹配链接的模式(排除已经是链接的内容和图片链接)
  var linkRegex = /(?<!<a\s[^>]*?)(?<!<img\s[^>]*?)(https?:\/\/\S+)/g;

  // 查找文章内容中的段落元素并替换链接
  var paragraphs = articleContent.getElementsByTagName("p");
  for (var i = 0; i < paragraphs.length; i++) {
    var paragraph = paragraphs[i];
    var paragraphHTML = paragraph.innerHTML;

    var replacedHTML = paragraphHTML.replace(linkRegex, function(match) {
      return '<a href="'%20+ match + '" target="_blank">'%20+ match + '</a>';
    });

    if (replacedHTML !== paragraphHTML) {
      paragraph.innerHTML = replacedHTML;
    }
  }
});
</script>
自动将文章中的链接转为超链接

以上代码设置后发现链接好像并不会把文章中所有链接都转成超链接,另外如果是img图片,链接也可能会显示不正常,下面是我修改后的最终代码:

代码语言:javascript
复制
<script>
// 等待页面加载完成后执行
document.addEventListener("DOMContentLoaded", function() {
  // 获取文章内容元素
  var articleContent = document.querySelector(".article-content");

  // 正则表达式匹配链接的模式(排除图片链接)
  var linkRegex = /(?<!<img\s[^>]*?)(https?:\/\/\S+)/g;

  // 查找文章内容中的段落元素并替换链接
  var paragraphs = articleContent.getElementsByTagName("p");
  for (var i = 0; i < paragraphs.length; i++) {
    var paragraph = paragraphs[i];
    var paragraphHTML = paragraph.innerHTML;

    var replacedHTML = paragraphHTML.replace(linkRegex, function(match) {
      return '<a href="'%20+ match + '" target="_blank">'%20+ match + '</a>';
    });

    if (replacedHTML !== paragraphHTML) {
      paragraph.innerHTML = replacedHTML;
    }
  }
});
</script>

效果:

自动将文章中的链接转为超链接

关于自动将文章中的链接转为超链接的相关内容;如有侵权,请联系老文删除。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
老文的头像老文
上一篇 2024年7月31日 上午11:37
下一篇 2024年7月31日 上午11:50

相关推荐

  • 如何将WordPress文章中的外链图片自动下载到本地?

    WordPress文章中的外链图片本地化插件 当我们想引用其他网站上的图片时候,直接使用外链不仅不能保证图片的稳定性,还有可能影响页面打开速度,然而如果一个个下载再上传又十分费力。 好在WordPress很多插件或者代码都可以实现自动将外链图片下载到本地,最终我选择了一个叫:nicen-localize-image 的插件(可以在WP插件市场搜索安装)。 安…

    2025年11月30日
    48
  • 宝塔面板创建的ftp登陆无法连接解决办法?

    宝塔面板创建的ftp登陆无法连接解决办法? 一:问题描述: 阿里云服务器安装了宝塔linux面板,创建了ftp,利用xftp选择ftp协议连接不上问题? 二:解决方法: 登陆阿里云服务器,在阿里云服务器安全组中放行端口21,并且被动端口(39000 – 40000)也需要处于放行状态,进入宝塔Linux面板中的软件管理,找到Pure-Ftpd 1…

    2021年9月21日
    745
  • 网站部署SSL数字证书实现HTTPS的用途和好处

    这些年越来越多的个人博客和企业网站部署SSL数字证书以实现HTTPS,但是仍有一部分站长不太了解网站部署SSL证书的好处,下面老文笔记就跟大家说说都有哪些好处。 1、网站数据更加安全 网站部署SSL证书并升级到HTTPS之后,在网站的服务器和网站访问者的网络浏览器之间创建一个安全连接,传输的数据都会得到加密保护,防止了数据被拦截后被黑客盗取这些内容。如果没有…

    2021年9月27日
    453
  • WordPress程序SEO优化方法

    WordPress是一款对搜索引擎非常友好的程序,用这款程序,只要内容不存在问题,就不用担心网站收录的问题。 下面主要介绍使用这款程序时要进行的一些操作。 第一步:添加SEO插件 推荐插件:platinum-seo-pack,可以通过百度搜索获得最新版本的下载地址以及相关指南。下载后,解压,把文件通过FTP上传到 /wp-content/plugins/ 这…

    2022年5月13日 建站知识
    329
  • wordpress程序中使用的Gravatar头像被墙及解决方案

    今天网站发现Gravatar应该是彻底被墙了,根本无法访问了,可能是最近大会或者什么其他原因吧,还有人因为什么被抓起来了,太多东西也不好评价。我Gril Friend Wall 果然是天下无敌。 年纪大了折腾的精力就不如从前了,只想用最简单的方法解决问题,我采用了第一种方法,直接调用官方的数据,理论上应该是最稳定的了(没被墙的前提下)。 调用ssl 头像链接…

    2021年8月18日
    445