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

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

代码语言: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日
    555
  • 宝塔面板安装指定历史版本教程

    使用宝塔官方一键命令,直接搭建出来的是最新版的宝塔。但是,很多时候我们需要使用低版本的,这个时候就没有办法直接使用一键命令来搭建了。下面就讲讲怎么安装指定历史版本宝塔面板。 一、版本合集(2022年1月6日更新) http://download.bt.cn/install/update/LinuxPanel-1.0.3.zip http://download…

    2022年5月16日
    872
  • Discuz论坛网站首页窄屏自定义宽度修改图文教程

    Discuz论坛管理中心默认有窄屏和宽屏的选择,窄屏默认是960px宽度,很多论坛为了页面美观,基本都是1200px的宽度,如何修改DZ论坛首页窄屏宽度大小的呢? 1、在网站根目录中依次打开文件 /template/default/common/common.css 2、直接在文件中快速查找960(文本编辑器中查找快捷键是ctrl+F5)会出现3处,将这3处…

    2024年7月30日 • 建站知识
    195
  • 怎样批量替换WordPress文章中的文字

    批量替换WordPress文章中的文字 如果准备替换修改散布在大量WordPress文章中的相同文字,手动编辑文章修改工作量大,可以用下面的代码实现批量替换,会用到WordPress的操作数据常量$wpdb修改数据库,不需要登录数据库操作。 将代码添加到当前主题函数模板functions.php的最后: global $wpdb; $wpdb->que…

    2022年2月12日
    854
  • 腾讯轻量服务器挂载云硬盘的方法

    操作步骤 使用控制台挂载云硬盘 登录 云硬盘控制台。 在云硬盘列表页,您可以通过以下方法挂载云硬盘: 挂载单个云硬盘:选择状态为“待挂载”的云硬盘所在行右侧的更多 > 挂载。 批量挂载云硬盘:勾选状态为“待挂载”的云硬盘,单击云硬盘列表上方的挂载进行批量挂载。 弹出“挂载到实例”窗口,进入“挂载到实例”步骤。如下图所示: 选择需挂载的实例,并参考以下信…

    2022年11月27日
    225