This regex grabs the ID from all of the various URLs I could find… There may be more out there, but I couldn’t find reference of them anywhere.
if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) { $video_id = $match[1]; }
Here is a sample of the URLs this regex matches: (there can be more content after the given URL that will be ignored)
http://youtu.be/dQw4w9WgXcQ …
http://www.youtube.com/embed/dQw4w9WgXcQ …
http://www.youtube.com/watch?v=dQw4w9WgXcQ …
http://www.youtube.com/?v=dQw4w9WgXcQ …
http://www.youtube.com/v/dQw4w9WgXcQ …
http://www.youtube.com/e/dQw4w9WgXcQ …
http://www.youtube.com/user/username#p/u/11/dQw4w9WgXcQ …
http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/dQw4w9WgXcQ …
http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ …
http://www.youtube.com/?feature=player_embedded&v=dQw4w9WgXcQ …
It also works on the youtube-nocookie.com URL with the same above options.
It will also pull the ID from the URL in an embed code (both iframe and object tags)