2012-06-13 33 views
0

锚我有,我用它来检测和更换锚(HTML)链接一个JavaScript函数。然而,问题是,有些人在这会导致页面元素过低大规模的联系,这打破了网页(典型值)粘贴。更换与链接和截断值

有谁知道一个简单的方法,以下两种功能合而为一,提供了一个锚标记与它里面的链接截断版?

IE转换

http://Superlonglink 

进入

<a href="http://Superlonglink">http://Super...</a> 

使用下列功能的组合:

功能的锚来代替链接:

function replaceURLWithHTMLLinks(text) { 
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
    return text.replace(exp,"<a href='$1' target='_blank'>$1</a>"); 
} 

函数来截断字符串:

String.prototype.trunc = function(n){ 
     return this.substr(0,n-1)+(this.length>n?'':''); 
}; 

我一直在玩这个有一段时间了,但是我发现我的JavaScript正则表达式的理解是有点有限

+0

而不是使用JavaScript,你可以尝试使用CSS'文本溢出截断字符串:省略号;'我不知道这是否会在你的情况下工作,但无论如何。 =) – PEZ

回答

1
function replaceURLWithHTMLLinks(text, maxlen) { 
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
    return text.replace(exp, function(link) { 
     return '<a href="' + link + '" target="_blank">' + 
      (link.length > maxlen ? link.substring(0, maxlen) + "..." : link) + '</a>' 
    }); 
} 

DEMO:http://jsfiddle.net/84Le9/2/

1

使用函数里面替换,所以你可以操纵它。

function replaceURLWithHTMLLinks(text) { 
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
    return text.replace(exp, 
     function (href) { 
      var partial = href.length<10 ? href : href.substring(0,10) + "..."; 
      return "<a href='" + href + "' target='_blank'>"+ partial + "</a>"}); 
} 



replaceURLWithHTMLLinks("http://www.example.com/IAMAVERYLONGLINKWITHMORESTUFF"); 

jsfiddle