0

リンクを検出してアンカー(html)に置き換えるために使用するjavascript関数があります。ただし、問題は、一部の人が大量のリンクを貼り付けて、ページ要素が過負荷になり、ページが壊れることです (通常)。

次の 2 つの関数を組み合わせて、アンカー タグに切り捨てられたバージョンのリンクを提供する簡単な方法を知っている人はいますか?

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を使用した正規表現の理解が少し限られていることがわかりました

4

2 に答える 2

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>'
    });
}

デモ: http://jsfiddle.net/84Le9/2/

于 2012-06-13T20:49:54.420 に答える
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

于 2012-06-13T20:50:50.643 に答える