Video Class code attached. You can put this file in any directory. Previously it was put in a folder called classes.
Calling video class
$link = "https://www.youtube.com/watch?v=NpEaa2P7qZI";
$embed = Video::get_embed_URL($link)."?&autoplay=1&loop=1";
Video Class
class Video {
const _youtube_regex = '/(\/\/.*?youtube\.[a-z]+)\/watch\?v=([^&]+)&?(.*)/';
const _youtubeshort_regex = '/(\/\/.*?youtu\.be)\/([^\?]+)(.*)/i';
const _vimeo_regex = '/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/';
/**
* Given filetype column from DB's article_medias table will return true if the media is video
* @param string $source source from article_medias.filetype column
* @return bool True if video
*/
public static function is_video( $source ) {
if ($source == 'youtube' || $source == 'youtu.be' || $source == 'vimeo') {
return true;
} else {
return false;
}
}
/**
* Given a url param to a youtube or vimeo video, will return the related format
* @param string $url Url to the video
* @return bool|string
*/
public static function get_source( $url ) {
if (preg_match(self::_youtube_regex, $url)) {
$format = 'youtube';
} else if (preg_match(self::_youtubeshort_regex, $url)) {
$format = 'youtu.be';
} else if (preg_match(self::_vimeo_regex, $url)) {
$format = 'vimeo';
} else {
return false;
}
return $format;
}
/**
* Given a video url to either a youtube or vimeo video, will return the specific video id
* @param string $url Video url
* @return bool|string
*/
public static function get_source_ID( $url ) {
$format = self::get_source($url);
switch ($format) {
case 'vimeo':
$vid_id = preg_replace(self::_vimeo_regex, '$2', $url);
if (substr($vid_id, 0, 5) == "http:") { $vid_id = substr($vid_id, 5); }
if (substr($vid_id, 0, 6) == "https:") { $vid_id = substr($vid_id, 6); }
break;
case 'youtube':
$vid_id = rtrim(preg_replace(self::_youtube_regex, '$2', $url), '?');
if (substr($vid_id, 0, 5) == "http:") { $vid_id = substr($vid_id, 5); }
if (substr($vid_id, 0, 6) == "https:") { $vid_id = substr($vid_id, 6); }
break;
case 'youtu.be':
$vid_id = rtrim(preg_replace(self::_youtubeshort_regex, '$2', $url), '?');
if (substr($vid_id, 0, 5) == "http:") { $vid_id = substr($vid_id, 5); }
if (substr($vid_id, 0, 6) == "https:") { $vid_id = substr($vid_id, 6); }
break;
default:
return false;
}
return $vid_id;
}
/**
* Gets the html url for the video
* @param string $id Video id
* @param string $format Video format/source
* @return bool|string returns url for embedding the video
*/
public static function get_embed_URL($url) {
$format = self::get_source($url);
$id = self::get_source_ID($url);
switch ($format) {
case 'vimeo':
$link = 'https://player.vimeo.com/video/'.$id;
break;
case 'youtube':
$link = 'https://www.youtube.com/embed/'.$id;
break;
case 'youtu.be':
$link = 'https://www.youtube.com/embed/'.$id;
break;
default:
return false;
}
return $link;
}
}