Patrick Talmadge
Regex YouTube Parser
Over the next several days I’m going to post a series of Regex strings. These Regex strings can be used to parse input for different links. I’m using PHP in my examples (you may need to tweak the Regex to work in another language).
Today’s Regex is used to parse a string for YouTube links and extract the Video_ID. Once I have the Video_ID I’m able to create a standard embed code from nearly any YouTube URL.
Supported Links:
The following Regex supports these YouTube links and embed code snippets.
Short URL : http://youtu.be/OxWMsxa5uVk
Normal URL: http://www.youtube.com/watch?v=OxWMsxa5uVk&t=28s
HTTPS URL : https://www.youtube.com/watch?v=OxWMsxa5uVk&feature=g-logo
New Embed : <iframe width="560" height="315" src="http://www.youtube.com/
embed/OxWMsxa5uVk" frameborder="0"
allowfullscreen></iframe>
Old Embed : <object width="1280" height="720"><param name="movie"
value="http://www.youtube.com/v/OxWMsxa5uVk?
version=3&hl=en_US&rel=0"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess"
value="always"></param><embed
src="http://www.youtube.com/v/OxWMsxa5uVk?version=3&
hl=en_US&rel=0" type="application/x-shockwave-flash"
width="1280" height="720" allowscriptaccess="always"
allowfullscreen="true"> </embed></object>
I won’t spend a lot of time explaining the Regex because I’ve broken it up Regex and commented each line.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $regexstr = '~ # Match Youtube link and embed code (?: # Group to match embed codes (?:<iframe [^>]*src=")? # If iframe match up to first quote of src |(?: # Group to match if older embed (?:<object .*>)? # Match opening Object tag (?:<param .*</param>)* # Match all param tags (?:<embed [^>]*src=")? # Match embed tag to the first quote of src )? # End older embed code group )? # End embed code groups (?: # Group youtube url https?:\/\/ # Either http or https (?:[\w]+\.)* # Optional subdomains (?: # Group host alternatives. youtu\.be/ # Either youtu.be, | youtube\.com # or youtube.com | youtube-nocookie\.com # or youtube-nocookie.com ) # End Host Group (?:\S*[^\w\-\s])? # Extra stuff up to VIDEO_ID ([\w\-]{11}) # $1: VIDEO_ID is numeric [^\s]* # Not a space ) # End group "? # Match end quote if part of src (?:[^>]*>)? # Match any extra stuff up to close brace (?: # Group to match last embed code </iframe> # Match the end of the iframe |</embed></object> # or Match the end of the older embed )? # End Group of last bit of embed code ~ix'; |
Usage Example:
This example function takes an input string and uses the above Regex to parse off the Video_ID ($1) and add it to $iframestr to create a standard embed code.
1 2 3 4 5 6 | function ParsePostYouTube($string){ $regexstr = <<REGEX FROM ABOVE>>; $iframestr = ' <p><iframe width="500" height="284" src="http://www.youtube.com/embed/$1?wmode=transparent" frameborder="0" allowfullscreen></iframe></p> '; return preg_replace($regexstr, $iframestr, $string); } |
One Response to Regex YouTube Parser
Leave a Reply Cancel reply
My Twitter
- Apple should allow people to pre order unannounced products just to see who the real #apple #fanboys are. 20 hours ago
- Started the SAAS class http://t.co/LV2EitqG Just wish it wasn't so Rails oriented. Not everyone is a #RoR #fanboy. 2012/02/21
- I can wait for the purse dog fashion statement to go away. I don't need to see your dog in the mall. 2012/02/18
- Nothing like early morning coding. Client side code clean up. #jquery #ui 2012/02/18
- RT @newsycombinator: I would rather drink piss like Bear Grylls than log in with Facebook http://t.co/4cb0kyiJ 2012/02/17
- Yesss!, @chi_llc followed me back. Woot... Woot... bring on the 3D software tweets :) 2012/02/17
- Bye Bye, Hulu+... & your silly content deals. Why can't I watch some shows on my TV! Mountian Lion just put the final nail in. 2012/02/16
- Mountain Lion looks cool. http://t.co/QFdtKD68 but I really hope Apple doesn't screw up #OSX by turning it into #iOS. 2012/02/16
- I have to say mustache.js makes front end development super easy #mustache #jquery 2012/02/15
- Nothing says Valentines Day like Twitter Spam. Thanks for the link, random spam bot with half naked picture. I'll click it later, trust me! 2012/02/14
Archives
- December 2011
- October 2011
- August 2011
- June 2011
- April 2011
- March 2011
- February 2011
- December 2010
- November 2010
- October 2010
- August 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- September 2007
- July 2007
- June 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006







[...] more Regex see Regex YouTube Parser or Regex Vimeo Parser Tagged with: Flickr Embed • PHP • Regex If you [...]