jQuery文本链接脚本?

有谁知道一个脚本,可以select所有的URL的文本引用,并自动replace指向这些位置的锚标记?

For example: http://www.google.com would automatically turn into <a href="http://www.google.com">http://www.google.com</a> 

注:我想要这个,因为我不想通过我的所有内容,并用锚标记包装它们。

JQuery在这里不会帮你一把,因为你并不关心DOM遍历/操作(除了创build锚标签)。 如果所有的URL都在<p class =“url”>标签中,那么也许。

一个香草JavaScript解决scheme可能是你想要的,作为命运, 这个人应该有你覆盖 。

注意:此脚本的更新和更正版本现在可在https://github.com/maranomynet/linkify(GPL / MIT许可证)


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

…这样的事情发生在我脑海:

 // 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
  • …所有上述包裹在尖括号(即<>

请享用 :-)

我有这个function,我打电话

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

我build议你在呈现给浏览器之前在你的静态页面上做这个,否则你会把转换计算的负担转移到你的可怜的访问者身上。 :)以下是你如何在Ruby中执行(从标准input读取,写入标准输出):

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

显然,你会想要考虑如何使这个如你所愿。 以上要求所有URL以http开头,并检查不要转换引号内的URL(即可能已经在<a href="…">内)。 它不会抓住ftp://,mailto :. 它会愉快地转换材料像<script>身体,你可能不希望发生的地方。

最令人满意的解决scheme是真正的用你的编辑器手工转换,所以你可以眼球和批准所有的替代。 一个好的编辑器会让你用组参考(又名后面的参考)做正则expression式replace,所以它不应该是一个大问题。

看看这个JQuery插件: https : //code.google.com/p/jquery-linkifier/

做这个服务器端有时候不是一个选项。 想想客户端的Twitter小部件(使用jsonp直接使用Twitter API),并且想要dynamic链接Tweets中的所有URL …

如果你想从另一个angular度来看一个解决scheme…如果你可以通过PHP和HTML净化器运行页面,它可以autoformat输出和链接任何url。