2013-10-21 26 views
2

我拥有一个为我的客户构建的简单CMS。如何自动将文本网址封装在锚定标记中

这个问题不在于他可能通过锚标签发布链接,他只是将其复制并直接粘贴到文本编辑器中。

是否有这些链接可以使用JavaScript封装在锚标签中。因此,当页面加载,而不是寻找它的链接是:

http://google.com 

它看起来像这样

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

UPDATE

#1真正做到这一点,当用户帖子的URL的回答/问题(如果这有助于理解我想实现的目标)。

谢谢

+0

这是一个简单的字符串连接。你有没有尝试过可以发布在这里供我们看的东西? – 2013-10-21 00:08:52

+0

我不太确定从哪里开始。我在这里阅读了一篇文章,但它似乎影响脚本标记和嵌入标记中的URL。 –

+1

http://stackoverflow.com/questions/6168260/how-to-parse-a-url http://stackoverflow.com/questions/579335/javascript-regexp-to-wrap-urls-and-emails-in - 船锚 http://stackoverflow.com/questions/247479/jquery-text-to-link-script –

回答

1

你可以尝试沿着这些线。装点您要更换这些采取与像“linkify”一个布尔属性效果的标签:

<div linkify>something http://google.com something</div><div linkify>something</div> 

现在用linkify集中的任何元素内进行更换。

$('*[linkify]').each(function() 
        { 
         $(this).html($(this).html().replace(/(?:(https?\:\/\/[^\s]+))/m, 
                  '<a href="$1">$1</a>')); 
        }); 

有一些注意事项。这根本不是一个很好的正则表达式 - 它只是匹配从http://https://开始直到第一个空白字符的任何内容。寻找更好的URL匹配正则表达式。此外,使用替代.html()意味着它将打破任何现有的链接发生在你的linkify元素下!如果在文本链接中碰巧有双引号字符,则会创建破坏的锚点元素。

你可能会考虑一种非常简单的标记来识别链接 - 它会比猜测好得多。