2013-01-08 82 views
-1

在我的网站中,我想给出一个“识别链接”的功能。你可以在Facebook上看到这个例子。无论何时我们共享链接,它都会自动检测并找到缩略图。另外如果我们在状态更新中做同样的事情,它也是一样的。c中的链接识别#

我想使用asp.net与c#实现相同的功能。

任何教程,链接或演示将有所帮助。如果可以,请分享逻辑。

+3

你应该先试一些编码,然后再问。基本上它是一个'onchange'或'onkeyup'事件与'regex'匹配的内容。 – Raptor

+0

@ShivanRaptor:谢谢。的确,我想要它的正则表达式。 – RTRokzzz

回答

3

这就是我使用的。在描述中,我使用40个字符,如果你想要描述中的完整链接,也只是删除子串部分...

static string LinksToHTML(string str) 
    { 
     Regex urlRx = new Regex(@"(?<url>((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+))", RegexOptions.IgnoreCase); 

     MatchCollection matches = urlRx.Matches(str); 

     foreach (Match match in matches) 
     { 
      var url = match.Groups["url"].Value; 
      str = str.Replace(url, string.Format("<a href=\"{0}\" target=\"blank\">{1}</a>", url, (url.Length > 40 ? url.Substring(0, 40) + "..." : url))); 

      //str = str.Replace(url, string.Format("<a href=\"{0}\" target=\"blank\">{1}</a>", url, url)); 
     } 

     return str; 
    } 
+1

你应该处理以'https'开头的链接 – Raptor

+2

谢谢Shivan,你是对的,我修改了它。 – erichste

+1

我想我更喜欢这个:http://stackoverflow.com/questions/6173/regular-expression-for-parsing-links-from-a-webpage – erichste