这个问题已经有一个答案在这里:

任何人都不会知道的一个剧本,可以选择的所有文本引用网址和自动代替他们与锚标指向这些地点?

For example:

http://www.google.com 

would automatically turn into

<a href="http://www.google.com">http://www.google.com</a>

注:我想这是因为我不想要通过我所有的内容并把它们包起锚标签。

有帮助吗?

解决方案

JQuery不会帮助你一大堆这里因为你不是真的关心DOM历/操纵(其他比创建锚标签)。如果你的所有网址都在 <p class="url"> 标签,然后也许。

香草JavaScript解决方案可能是你想要什么,并作为命运的安排, 这家伙应该有你所复盖.

其他提示

注: 一个更新的和修正的版本的这个脚本是现在 https://github.com/maranomynet/linkify (GPL/麻省理工学院许可证)


嗯...对我来说,这似乎是完美的任务。.

...像这样的东西掉了我的心灵:

// Define: Linkify plugin
(function($){

  var url1 = /(^|&lt;|\s)(www\..+?\..+?)(\s|&gt;|$)/g,
      url2 = /(^|&lt;|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|&gt;|$)/g,

      linkifyThis = function () {
        var childNodes = this.childNodes,
            i = childNodes.length;
        while(i--)
        {
          var n = childNodes[i];
          if (n.nodeType == 3) {
            var html = $.trim(n.nodeValue);
            if (html)
            {
              html = html.replace(/&/g, '&amp;')
                         .replace(/</g, '&lt;')
                         .replace(/>/g, '&gt;')
                         .replace(url1, '$1<a href="http://$2">$2</a>$3')
                         .replace(url2, '$1<a href="$2">$2</a>$5');
              $(n).after(html).remove();
            }
          }
          else if (n.nodeType == 1  &&  !/^(a|button|textarea)$/i.test(n.tagName)) {
            linkifyThis.call(n);
          }
        }
      };

  $.fn.linkify = function () {
    return this.each(linkifyThis);
  };

})(jQuery);

// Usage example:
jQuery('div.textbody').linkify();

它试图把所有出现的以下成链接:

  • www.example.com/path
  • http://www.example.com/path
  • mailto:me@example.com
  • ftp://www.server.com/path
  • ...上述所有包裹在角括号(即 <...>)

享用:-)

我有这个功能我打电话

textToLinks: function(text) {

    var re = /(https?:\/\/(([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?))/g;
    return text.replace(re, "<a href=\"$1\" title=\"\">$1</a>");
  }

我建议你这样做对你的静态网页之前呈现给浏览器,或者您可以推动负担转换的计算到你可怜的访客。:)这怎么可能做到这红宝石(阅读,从stdin,写stdout):

while line = gets
  puts line.gsub( /(^|[^"'])(http\S+)/, "\\1<a href='\\2'>\\2</a>" )
end

显然,只要想想如何使这样强大,你的愿望。上述要求的所有网址开始http,并将检查不转换成网址是在报价(即这可能已经被内部的 <a href="...">).它不会赶上ftp://,mailto:.它将愉快地转换材料在这样的地方 <script> bodies, which you may not want to happen.

最令人满意的解决办法是真正做到转换手与你的编辑所以你可以眼球和批准所有替换。 一个很好的编辑 会让你做regexp替代基准(aka回引用),因此它不应该是一个大问题。

做这个服务器的端不是一个选项的时候。想想一个客户机-边叽叽喳喳部件(即直接转到Twitter API使用他),并要linkify的所有网址中的信息动态...

如果你想要一个解决方案,从另一个角度...如果你可以运行的网页,通过php和HTML净化,就可以自动套用格式的输出和linkify任何网址。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top