Skip to content

Instantly share code, notes, and snippets.

@odil-io
Last active January 23, 2018 13:01
Show Gist options
  • Save odil-io/91a1d834884305a492bad935ec1b8dde to your computer and use it in GitHub Desktop.
Save odil-io/91a1d834884305a492bad935ec1b8dde to your computer and use it in GitHub Desktop.
Regex Youtube and Vimeo URL extraction
/**
 * Get Youtube video ID from URL
 *
 * @param string $url
 * @return mixed Youtube video ID or FALSE if not found
 */
function getYoutubeIdFromUrl($url) {
    $parts = parse_url($url);
    if(isset($parts['query'])){
        parse_str($parts['query'], $qs);
        if(isset($qs['v'])){
            return $qs['v'];
        }else if(isset($qs['vi'])){
            return $qs['vi'];
        }
    }
    if(isset($parts['path'])){
        $path = explode('/', trim($parts['path'], '/'));
        return $path[count($path)-1];
    }
    return false;
}
// Test
$urls = array(
    'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player',
    'http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player',
    'http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player',
    'https://vimeo.com/251397575',
    'https://vimeo.com/251309842',
);
foreach($urls as $url){
    echo $url . ' : ' . getYoutubeIdFromUrl($url) . "\n";
}

This will account for all YouTube and Vimeo URL's

@odil-io
Copy link
Author

odil-io commented Jan 23, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment