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

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

代码语言: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是使用人数较多的一款CMS,WordPress 主题众多是一个优点,这也是我们经常更换主题的原因,不过 WordPress 一次只能启用一个主题,其他主题如果长期不使用的话,建议直接删除。 我们先看看WordPress 主题文件存放在哪里? 其实,WordPress 主题都统一存放在 wp-content\themes\文件夹内,一个主题就…

    2021年8月12日
    479
  • 通过Nginx日志分析百度蜘蛛的爬行抓取情况

    做网站 SEO优化的朋友会特别关注蜘蛛爬行的次数、频率等,而做好网站优化的第一步就是首先让蜘蛛爬虫经常来你的网站进行光顾,如果蜘蛛爬行出现异常怎么办?下面将结合 Linux 系统中的几个 Linux 命令,如 cat 命令 \grep 命令 \awk 命令等可以让你清楚的知道蜘蛛的爬行情况。 下面我们针对 ng­inx 服务器进行分析,日志文件所在目录:/u…

    2021年8月25日
    619
  • 说说如何抢先注册一个快过期的域名

    小编最近看上了一个域名,打算抢注,所以就提前做了功课,学习了怎么抢注一个快过期的域名,下面来具体说说! 1. 查看具体删除时间(重要点): 某域名过期 / 删除时间查询: 域名删除时间查询 最近可抢注域名查询 (国际): Pool.com : Pending Delete List 最近可抢注域名查询 (国内): 易名:过期域名预订列表 2. 预订抢注。 国…

    2021年9月11日
    436
  • 织梦dedecms标签有哪些

    织梦dedecms标签有哪些 织梦系统常用的一些标签,总结如下,希望对各位有帮助: ● 网站名称:{dede:global.cfg_webname/} ● 网站根网址:{dede:global.cfg_basehost/} ● 网站根目录:{dede:global.cfg_cmsurl/} ● 网页主页链接:{dede:global.cfg_indexurl…

    2022年12月18日
    127
  • WordPress网站设置部分文章内容评论/回复后可见

    如果我们希望隐藏文章部分内容,需要用户评论可见 、回复可见,那么今天这篇WordPress教程文章就刚好适合你。 这个功能实现起来很容易,而且可以提高用户积极性,是一个非常不错的功能。 下面是主要的核心代码。 //WordPress实现文章部分内容评论后可见 function reply_to_read($atts, $content=null) { ext…

    2021年9月4日
    598