Jump to content

Extract YouTube Video Id From Embed Code


zimick

Recommended Posts

I know there is a way to do this with Regex, but I cannot seem to get it to extract the correct data.

 

I want to extract the YouTube video ID from a YouTube embed code.

 

i.e.

YouTube embed code:

 

<object width="425" height="350"><param name="movie" value="

name="wmode" value="transparent"></param><embed src="
type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>

 

 

I need to extract "CQzUsTFqtW0" to a variable.

 

Any help would be appreciated - or even a point in the right direction.

Link to comment
https://forums.phpfreaks.com/topic/63980-extract-youtube-video-id-from-embed-code/
Share on other sites

Here's one possible solution sans regex:

 

<?php
$string = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/CQzUsTFqtW0"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/CQzUsTFqtW0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';

$doc = new DOMDocument();
$doc->loadXml($string);
$params = $doc->getElementsByTagName( "param" );
foreach( $params as $param )
{
if($param->getAttribute("name") == "movie"){
	echo basename($param->getAttribute("value"));
}
}
?>

 

Best,

 

Patrick

<pre>
<?php
$string = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/CQzUsTFqtW0"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/CQzUsTFqtW0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';
preg_match('#(?<=youtube\.com/v/)\w+#', $string, $matches);
print_r($matches);
?>
</pre>

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.