【问题标题】:Turn all the url in html link tags without converting any other links whit javascript将所有 url 转换为 html 链接标签而不用 javascript 转换任何其他链接
【发布时间】:2015-10-30 12:29:25
【问题描述】:

我有一个 REST 服务,它提供带有文本和链接的字符串。字符串中可以是 url,也可以是已经用 HTML 链接标签格式化的链接。

我正在寻找一种在不更改任何现有链接标签的情况下将所有 URL 转换为 html 链接的方法。

我使用了这个函数,但它只完成了一半的工作,因为它会将 URL 转换为现有链接标签的 href 属性内

var text = "Test linktag: <a target='_blank' href='http://www.google.com'>Google</a>  some other text" + "<br>" +
            "Test url:  http://www.google.com some other text";
function urlify(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    var text1 = text.replace(exp, "<a href='$1'>$1</a>");
    var exp2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
    return text1.replace(exp2, '$1<a target="_blank" href="http://$2">$2</a>');
}

var result = urlify(text)
// result will give:
// Test linktag: <a target='_blank' href='<a href='http://www.google.com'>http://www.google.com</a>'>Google</a>  some other text<br>Test url:  <a href='http://www.google.com'>http://www.google.com</a> some other text

【问题讨论】:

  • 你可以为你迄今为止尝试过的东西制作小提琴
  • 您必须让您的函数查找现有的a 标签,然后删除它们(最简单的方法,但会丢失target 等已经存在的任何属性)或者不添加新标签。
  • @SunKnight0 失去目标属性不会成为问题,因为我的应用程序中的每个链接都有 target="_blank" 属性。
  • 然后在添加新标签之前从文本中删除所有 实例
  • @SunKnight0 它增加了许多变量。我相信我能做的最好的事情就是尝试一些库。我发现最好的工作就像一个魅力:github.com/gregjacobs/Autolinker.js

标签: javascript jquery html


【解决方案1】:

您可以从此链接获取帮助

<div tabIndex="0" title="People Picker" class="ms-inputuserfield">Administrator</div> 

Dynamacily add anchor tag

【讨论】:

    【解决方案2】:

    我将自己标记为重复,因为这个问题(显然)已经被问到并且已经有了正确的答案。

    该答案不是解决方案,但它是解决我的问题的最佳方式:

    How to replace plain URLs with links?

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多