2014-12-04 75 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