2014-12-04 33 views
0

Youtube和Vevo视频有任何正则表达式吗?Youtube或Vevo的正则表达式

下面是一些示例代码: 的Youtube:CevxZvSJLk8 VEVO:USUV71402382

据我所知,该模式似乎对YouTube视频小写字母。如何使用正则表达式正确检测它们?

只是为了说清楚,这里是我的问题:

  • 什么是针对YouTube代码的权力正则表达式模式?
  • 什么是Vevo代码的正确的正则表达式 模式?

我试图把代码的URL的最后一部分: VEVO:http://cache.vevo.com/assets/html/embed.html?video=USUV70904460 的Youtube:http://www.youtube.com/embed/P1j-6vRykFs

的代码看起来就像这样:

function get_video_url($video_code) { 
    if (preg_match_all('<Youtube regex code>',$video_code)) { 
    return "http://www.youtube.com/embed/" . $code; 
    } elseif (preg_match_all('<Vevo regex code>',$video_code)) { 
    return "http://cache.vevo.com/assets/html/embed.html?video=" . $code; 
    } else { 
    return "Youtube or vevo link anyway."; 
    } 
} 

我只是不过,需要正则表达式。

+0

你从哪里得到的代码?是否有可能只检查域名? – 2014-12-04 03:09:17

+0

不可以,因为用户只会单独发布视频代码。 – 2014-12-04 04:02:27

+0

对于vevo,如果这是模式,那么它的[a-zA-Z] {4} \ d {8} – argentum47 2014-12-04 04:33:53

回答

0

从我所知道的一切来看,VEVO代码长度为12个字符,而youtube视频长度为11个字符。

最古老的VEVO视频可以找我,从他们的Facebook拉,有12个字符,全大写代码http://www.vevo.com/watch/lady-gaga/Speechless-(Live-At-The-VEVO-Launch-Event)/USUV70904460

因为这样做最新的。


但是,这里是PHP代码,如果你喜欢正则表达式匹配。

if (preg_match("/[^\w-]+/",$video_code)) { 
    return "Invalid video code"; 
    } else if (preg_match("/^[A-Z0-9]+$/",$video_code)) { 
    return "http://cache.vevo.com/assets/html/embed.html?video=" . $video_code; 
    } else { 
    return "http://www.youtube.com/embed/" . $video_code; 
    } 

一些经过研究,我发现这一点:

来源。

  1. How to validate youtube video ids?
  2. Regex vevo URL video-id

#2提供了一个极好的正则表达式,将主要的工作是这样的:

if (preg_match("/^([A-Z]{2}[A-Z0-9]{3}\d{2}\d{5})$/",$video_code)) { 
    return "http://cache.vevo.com/assets/html/embed.html?video=" . $video_code; 
    } else if (preg_match("/^[\w-]{11}+$/",$video_code)) { 
    return "http://www.youtube.com/embed/" . $video_code; 
    } else { 
    return "Invalid video code"; 
    } 
+0

谢谢。我修改了无效代码,因为Youtube网址有破折号:preg_match(“/ [^ a-zA-Z0-9 \ s - ] + /”,$ video_code)。谢谢,@cfqueryparam。 – 2014-12-04 18:19:18

+0

@FranzNoel好吧,我已经更新了我的答案,以便它。请问为什么你还要在代码中包含一个空格?修剪周围的空白而不是让它通过支票不是更好吗? '$ video_code = trim($ video_code);'?此外,我发现了一些有用的帖子,并组装了一些更好的代码,这些代码很少能够自己上传服务,可能是您可以获得的最好的代码。 – 2014-12-04 19:42:56

+0

我不知道正则表达式是指空间。我认为这是指短跑。谢谢,非常感谢,我认为preg_match_all比使用preg_match更相关,因为它会检查视频代码的整个字符串。 – 2014-12-04 21:58:37