Parse Youtube ID from Youtube URL

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
defroster
Forum Commoner
Posts: 49
Joined: Wed Mar 24, 2010 12:05 pm

Parse Youtube ID from Youtube URL

Post by defroster »

How could I from the varying URLs parse only the YouTube video ID?

Code: Select all

http://www.youtube.com/watch?v=SwrawcORlp0&feature=player_embedded
http://www.youtube.com/watch?v=SwrawcORlp0&feature=popular
How can I from the URLs above only extract the id into a variable $url

Code: Select all

SwrawcORlp0
Thanks, df
defroster
Forum Commoner
Posts: 49
Joined: Wed Mar 24, 2010 12:05 pm

Re: Parse Youtube ID from Youtube URL

Post by defroster »

Actually just stumbled upon one which works well.

Code: Select all

/* 
	 * Retrieve the video ID from a YouTube video URL
	 * @param $ytURL The full YouTube URL from which the ID will be extracted
	 * @return $ytvID The YouTube video ID string
	 */
	function getYTid($ytURL) {
 
		$ytvIDlen = 11;	// This is the length of YouTube's video IDs
 
		// The ID string starts after "v=", which is usually right after 
		// "youtube.com/watch?" in the URL
		$idStarts = strpos($ytURL, "?v=");
 
		// In case the "v=" is NOT right after the "?" (not likely, but I like to keep my 
		// bases covered), it will be after an "&":
		if($idStarts === FALSE)
			$idStarts = strpos($ytURL, "&v=");
		// If still FALSE, URL doesn't have a vid ID
		if($idStarts === FALSE)
			die("YouTube video ID not found. Please double-check your URL.");
 
		// Offset the start location to match the beginning of the ID string
		$idStarts +=3;
 
		// Get the ID string and return it
		$ytvID = substr($ytURL, $idStarts, $ytvIDlen);
 
		return $ytvID;
 
	}
User avatar
AbraCadaver
DevNet Master
Posts: 2572
Joined: Mon Feb 24, 2003 10:12 am
Location: The Republic of Texas
Contact:

Re: Parse Youtube ID from Youtube URL

Post by AbraCadaver »

That's a lot of code:

Code: Select all

$url = 'http://www.youtube.com/watch?v=SwrawcORlp0&feature=player_embedded';

// parse into global scope
parse_str($url);
echo $v;

// or parse into array
parse_str($url, $vars);
echo $vars['v'];
mysql_function(): WARNING: This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQLextension should be used. See also MySQL: choosing an API guide and related FAQ for more information.
defroster
Forum Commoner
Posts: 49
Joined: Wed Mar 24, 2010 12:05 pm

Re: Parse Youtube ID from Youtube URL

Post by defroster »

Wow, that was a lot easier way of doing it! thanks
User avatar
McInfo
DevNet Resident
Posts: 1532
Joined: Wed Apr 01, 2009 1:31 pm

Re: Parse Youtube ID from Youtube URL

Post by McInfo »

Before you can use parse_str(), you need to extract the query string from the URL. Otherwise, parse_str() returns NULL.

Code: Select all

$url = 'http://www.youtube.com/watch?v=SwrawcORlp0&feature=player_embedded#internal';

// Solution 1
$args = null;
parse_str(parse_url($url, PHP_URL_QUERY), $args);
echo $args['v']; // SwrawcORlp0

// Solution 2
$matches = null;
preg_match('/v=([^&#]+)/', $url, $matches);
echo $matches[1]; // SwrawcORlp0
Edit: Added # to regex.
Last edited by McInfo on Thu Aug 26, 2010 11:12 am, edited 1 time in total.
User avatar
AbraCadaver
DevNet Master
Posts: 2572
Joined: Mon Feb 24, 2003 10:12 am
Location: The Republic of Texas
Contact:

Re: Parse Youtube ID from Youtube URL

Post by AbraCadaver »

Good catch!
mysql_function(): WARNING: This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQLextension should be used. See also MySQL: choosing an API guide and related FAQ for more information.
defroster
Forum Commoner
Posts: 49
Joined: Wed Mar 24, 2010 12:05 pm

Re: Parse Youtube ID from Youtube URL

Post by defroster »

Thanks :) This is truly a great forum
Post Reply