有没有人知道一个脚本可以选择对URL的所有文本引用,并自动用指向这些位置的锚标签替换它们?
For example: http://www.google.com would automatically turn into http://www.google.com
注意:我想要这个,因为我不想浏览我的所有内容并用锚标记包装它们.
注意:此脚本的更新和更正版本现在可从https://github.com/maranomynet/linkify(GPL/MIT许可证)获得
嗯......对我来说,这似乎是jQuery的完美任务.
......这样的事情脱离了我的脑海:
// Define: Linkify plugin (function($){ var url1 = /(^|<|\s)(www\..+?\..+?)(\s|>|$)/g, url2 = /(^|<|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|>|$)/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, '&') .replace(//g, '>') .replace(url1, '$1$2$3') .replace(url2, '$1$2$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
...以上所有包裹在尖括号中(即<
...... >
)
请享用 :-)
由于您并不真正关心DOM遍历/操作(除了创建锚标记之外),因此JQuery不会在这里帮助您.如果您的所有网址都在
标签中,那么也许.
一个普通的JavaScript解决方案可能就是你想要的,而且就像命运一样,这个人应该让你满意.
我有这个功能我打电话
textToLinks: function(text) { var re = /(https?:\/\/(([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?))/g; return text.replace(re, "$1"); }