Get Youtube video id from embaded code – PHP

function parse_youtube($link){

$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';

preg_match($regexstr, $link, $matches);
return $matches[1];
}

function get_youtube_id($embadedcode){
if(strpos($embadedcode,'iframe') !== false){
return parse_youtube($embadedcode);
} else if(strpos($embadedcode,'object') !== false){
preg_match('#(?<=youtube.com/v/)w+#', $embadedcode, $matches);
return $matches[0];
}
}