LƯU Ý: Một phiên bản cập nhật và chỉnh sửa kịch bản này hiện đã có tại https://github.com/maranomynet/linkify (giấy phép GPL/MIT)
Hmm ... với tôi điều này có vẻ như nhiệm vụ hoàn hảo cho jQuery.
... một cái gì đó như thế này đã ra khỏi đỉnh đầu tôi:
// 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(/>/g, '>')
.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();
Nó cố gắng để biến tất cả các lần xuất hiện trong các cách sau thành liên kết:
www.example.com/path
http://www.example.com/path
mailto:[email protected]
ftp://www.server.com/path
- ... tất cả những điều trên được bao bọc trong dấu ngoặc nhọn (tức là
<
...>
)
Thưởng thức :-)
Nguồn
2008-10-30 00:19:07
javascript có phải là môi trường duy nhất có sẵn cho bạn hoặc bạn có một chương trình phụ trợ máy chủ như php không? – DGM
Tôi đã tạo một thư viện mà bạn có thể muốn xem xét: ali-saleem.github.io/anchorme.js có kích thước rất nhỏ, rất hiệu quả, rất nhạy cảm, mang lại số tiền tích cực sai nhất, hỗ trợ tất cả các TLD, hỗ trợ IP, FTP, HTTP hoặc thậm chí không có http, bỏ qua HTML, không có regex và nhanh gấp 3 lần so với liên kết và autolinker. –