2012-06-21 166 views
0

我需要从youtube嵌入网址获取youtube id/url。没有太多的正则表达式(不必是正则表达式)的经验,我很难从嵌入网址中获取URL。 有没有人最简单的方法是做什么?从Youtube上获取Youtube ID在C#中嵌入网址#

http://pastebin.com/708GPJnR

+0

请你可以为我复制/粘贴几行代码 – HatSoft

+1

一些示例网址会有所帮助。 – Qtax

+0

这很奇怪。我添加了嵌入网址,但由于某种原因不起作用。确定发布在pastebin中。 – sanjeev40084

回答

0

您的例子并不似乎是一个完整的YouTube视频ID。据我了解,YouTube视频ID的长度为11个字符。这就是说,我修改了你的示例嵌入URL为11个字符(通过在末尾加1),并使用XML和你的问题的评论(stackoverflow.com/a/1773972/56778)中引用的正则表达式组合来执行以下操作:

var xmlFrag = @"<object width='530' height='319'> 
        <param name='movie' value='**http://www.youtube.com/v/973r7347&amp;hl=en_US&amp;fs=1&amp;rel=0**' /> 
        <param name='allowFullScreen' value='true' /> 
        <param name='allowscriptaccess' value='always' /> 
        <embed src='http://www.youtube.com/v/973r7347111&amp;hl=en_US&amp;fs=1&amp;rel=0' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='530' height='319'></embed> 
       </object>"; 
var doc = new XmlDocument(); 
doc.LoadXml(xmlFrag); 
var match = Regex.Match(doc.SelectSingleNode("/object/embed").Attributes["src"].Value, 
              "^http://(?<domain>([^./]+\\.)*youtube\\.com)(/v/|/watch\\?v=)(?<videoId>[A-Za-z0-9_-]{11})", RegexOptions.IgnoreCase); 

String youtubeId; 
if (match.Success) 
    youtubeId = match.Groups[4].Value;