
Today I would like to share my "Universal Embed" function ^_^ It is technically a function, which I have been working on from time to time during the past few years, whenever I have had the time to work on it, but today I sat down for some hours, and ended up giving it quite the upgrade

Before it used to only append the iframe of one, of the possibly countless links, to the bottom of the string. Today I wrote the entire "replace" part of the function, so that it would be more useful on e.g. a blog.


As it supports most of the popular media embed objects at the moment, I might not add anything to the function for quite a while


Please note that I am in no way a master of regular expressions, so some of them could possibly be cleaned up, but the important thing is that they all work

Feel free to use this for any project you would like, or even use it as a base and add your own embed codes to it


I hope some of you guys will find this function as useful as I personally do

Note:
The code syntax highlight on the forum makes it look like a total mess. If you would like to have a better overview, I have provided the function in its own seperate file on my DropBox here:
https://db.tt/0WcNTdAO
// Universal embed function. Supports: YouTube, Vimeo, Facebook, Twitch, Soundcloud, and Spotify. function embed( $link, $media = 0, $width = 300, $height = 300, $replace = 0 ) { if ( $replace ) { if ( preg_match_all( '(youtube.com/watch\?v=[a-zA-Z0-9]|youtu.be/[a-zA-Z0-9])', $link ) ) { $regex = preg_match_all( '~(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\s]+(?=\?)|(?<=v=)[^&\s]+|(?<=youtu.be/)[^&\s]~ix', $link, $youtube ); for ( $i = 0; $i < sizeof( $youtube[0] ); $i++ ) { $search = array( 'http://youtube.com/watch?v='. $youtube[0][$i], 'http://www.youtube.com/watch?v='. $youtube[0][$i], 'https://youtube.com/watch?v='. $youtube[0][$i], 'https://www.youtube.com/watch?v='. $youtube[0][$i] ); $link = str_ireplace( $search, "<br><iframe width=\"{$width}\" height=\"{$height}\" src=\"https://www.youtube.com/embed/{$youtube[0][$i]}\" frameborder=\"0\" allowfullscreen></iframe><br>", $link ); } } if ( preg_match_all( '(vimeo.com/[0-9])', $link ) ) { $regex = preg_match_all( '~(?:https?:\/\/(?:[\w]+\.)*vimeo\.com(?:[\/\w]*\/videos?)?\/([0-9]+)[^\s]*)"?~ix', $link, $vimeo ); for ( $i = 0; $i < sizeof( $vimeo[0] ); $i++ ) { $search = array( 'http://www.vimeo.com/'. $vimeo[1][$i], 'https://www.vimeo.com/'. $vimeo[1][$i], 'http://vimeo.com/'. $vimeo[1][$i], 'https://vimeo.com/'. $vimeo[1][$i] ); $link = str_ireplace( $search, "<br><iframe src=\"http://player.vimeo.com/video/{$vimeo[1][$i]}?title=0&byline=0&portrait=0\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><br>", $link ); } } if ( preg_match_all( '((facebook.com)\/(photo|video)\.php\?v=[0-9])', $link ) ) { $regex = preg_match_all( '~(http\:\/\/)?(facebook\.com)\/(photo|video)\.php\?v=([0-9]+)~ix', $link, $facebook ); for ( $i = 0; $i < sizeof( $facebook[0] ); $i++ ) { $search = array( 'http://facebook.com/photo.php?v='. $facebook[4][$i], 'https://facebook.com/photo.php?v='. $facebook[4][$i], 'http://www.facebook.com/video.php?v='. $facebook[4][$i], 'https://www.facebook.com/video.php?v='. $facebook[4][$i] ); $link = str_ireplace( $search, "<br><iframe src=\"https://www.facebook.com/video/embed?vi ... facebook[4][$i]}\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\"></iframe><br>", $link ); } } if ( preg_match_all( '(soundcloud\.com\/[a-zA-Z0-9]+\/[a-zA-Z0-9]+)', $link ) ) { $regex = preg_match_all( '~(http\:\/\/)?(soundcloud\.com)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)~ix', $link, $soundcloud ); for ( $i = 0; $i < sizeof( $soundcloud[0] ); $i++ ) { $search = array( "http://soundcloud.com/{$soundcloud[3][$i]}/{$soundcloud[4][$i]}", "https://soundcloud.com/{$soundcloud[3][$i]}/{$soundcloud[4][$i]}", "http://www.soundcloud.com/{$soundcloud[3][$i]}/{$soundcloud[4][$i]}", "https://www.soundcloud.com/{$soundcloud[3][$i]}/{$soundcloud[4][$i]}" ); $link = str_ireplace( $search, "<br><iframe width=\"{$width}\" height=\"{$height}\" scrolling=\"no\" frameborder=\"no\" src=\"https://w.soundcloud.com/player/?url=ht ... undcloud[3][$i]}/{$soundcloud[4][$i]}&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true\"></iframe><br>", $link ); } } if ( preg_match_all( '(open.spotify.com\/(track|album|artist)\/([a-zA-Z0-9]))', $link ) ) { $regex = preg_match_all( '~(http\:\/\/)?open.spotify.com\/(track|album|artist)\/([a-zA-Z0-9]{22})~ix', $link, $spotify ); for ( $i = 0; $i < sizeof( $spotify[0] ); $i++ ) { $search = array( "http://open.spotify.com/{$spotify[2][$i]}/{$spotify[3][$i]}", "https://open.spotify.com/{$spotify[2][$i]}/{$spotify[3][$i]}", "http://www.open.spotify.com/{$spotify[2][$i]}/{$spotify[3][$i]}", "https://www.open.spotify.com/{$spotify[2][$i]}/{$spotify[3][$i]}" ); $link = str_ireplace( $search, "<br><iframe src=\"https://embed.spotify.com/?uri=spotify:{$spotify[2][$i]}:{$spotify[3][$i]}\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\" allowtransparency=\"true\"></iframe><br>", $link ); } } if ( preg_match_all( '(twitch\.tv\/([a-zA-Z0-9]+)\/chat)', $link ) ) { $regex = preg_match_all( '~((http\:\/\/)?twitch\.tv\/([a-zA-Z0-9]+)\/chat)~ix', $link, $twitch ); for ( $i = 0; $i < sizeof( $twitch[0] ); $i++ ) { $search = array( "http://twitch.tv/{$twitch[3][$i]}/chat", "https://twitch.tv/{$twitch[3][$i]}/chat", "http://www.twitch.tv/{$twitch[3][$i]}/chat", "https://www.twitch.tv/{$twitch[3][$i]}/chat", "http://twitch.tv/{$twitch[3][$i]}/chat?popout=", "https://twitch.tv/{$twitch[3][$i]}/chat?popout=", "http://www.twitch.tv/{$twitch[3][$i]}/chat?popout=", "https://www.twitch.tv/{$twitch[3][$i]}/chat?popout=" ); $link = str_ireplace( $search, "<br><iframe frameborder=\"0\" scrolling=\"no\" src=\"http://twitch.tv/{$twitch[3][$i]}/chat\" height=\"{$height}\" width=\"{$width}\"></iframe>", $link ); } } if ( preg_match_all( '(twitch.tv/[a-zA-Z0-9]+)', $link ) ) { preg_match_all( '~(https?\:\/\/)?(www\.)?twitch\.tv\/([a-zA-Z0-9]+)(?!\/chat)\b~ix', $link, $twitch ); for ( $i = 0; $i < sizeof( $twitch[0] ); $i++ ) { $newstr = "<br><object type=\"application/x-shockwave-flash\" height=\"{$height}\" width=\"{$width}\" id=\"live_embed_player_flash\" data=\"http://www.twitch.tv/widgets/live_embed ... {$twitch[3][$i]}\" bgcolor=\"#000000\"> <param name=\"allowFullScreen\" value=\"true\"> <param name=\"allowScriptAccess\" value=\"always\"> <param name=\"allowNetworking\" value=\"all\"> <param name=\"movie\" value=\"http://www.twitch.tv/widgets/live_embed_player.swf\"> <param name=\"flashvars\" value=\"hostname=www.twitch.tv&channel={$twitch[3][$i]}&auto_play=true&start_volume=25\"> </object><br>"; $link = preg_replace( "~(https?\:\/\/)?(www\.)?twitch\.tv\/({$twitch[3][$i]})(?!\/chat)\b~ix", $newstr, $link ); } } return $link; } else { if ( preg_match( '(vimeo.com/[0-9])', $link ) ) { $type = 'vimeo'; } else if ( preg_match( '(youtube.com/watch\?v=[a-zA-Z0-9]|youtu.be/[a-zA-Z0-9])', $link ) ) { $type = 'youtube'; } else if ( preg_match( '(soundcloud\.com\/[a-zA-Z0-9]+\/[a-zA-Z0-9]+)', $link ) ) { $type = 'soundcloud'; } else if ( preg_match( '(open.spotify.com\/(track|album|artist)\/([a-zA-Z0-9]))', $link ) ) { $type = 'spotify'; } else if ( preg_match( '(facebook.com/photo.php\?v=[0-9])', $link ) ) { $type = 'facebook'; } else if ( preg_match( '(twitch.tv/[a-zA-Z0-9]+/chat)', $link ) ) { $type = 'twitchchat'; } else if ( preg_match( '(twitch.tv/[a-zA-Z0-9]+)', $link ) ) { $type = 'twitch'; } switch( $type ) { case 'vimeo': $regex = preg_match( '~(?:https?:\/\/(?:[\w]+\.)*vimeo\.com(?:[\/\w]*\/videos?)?\/([0-9]+)[^\s]*)"?~ix', $link, $vimeo ); $regex2 = preg_match( '#[0-9]+#', $vimeo[0], $vimID ); if ( $media ) { $link = "<iframe src=\"http://player.vimeo.com/video/{$vimID[0 ... portrait=0\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>"; } else { $link .= "<br><iframe src=\"http://player.vimeo.com/video/{$vimID[0 ... portrait=0\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><br>"; } return $link; break; case 'youtube': $regex = preg_match( '~(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\s]+(?=\?)|(?<=v=)[^&\s]+|(?<=youtu.be/)[^&\s]~ix', $link, $youtube ); $youtubeId = $youtube[0]; if ( $media ) { $link = "<iframe width=\"{$width}\" height=\"{$height}\" src=\"https://www.youtube.com/embed/{$youtubeId}\" frameborder=\"0\" allowfullscreen></iframe>"; } else { $link .= "<br><iframe width=\"{$width}\" height=\"{$height}\" src=\"https://www.youtube.com/embed/{$youtubeId}\" frameborder=\"0\" allowfullscreen></iframe><br>"; } return $link; break; case 'soundcloud': $regex = preg_match( '~(http\:\/\/)?(soundcloud\.com)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)~ix', $link, $soundcloud ); if ( $media ) { $link = "<br><iframe width=\"{$width}\" height=\"{$height}\" scrolling=\"no\" frameborder=\"no\" src=\"https://w.soundcloud.com/player/?url=ht ... iframe><br>"; } else { $link .= "<br><iframe width=\"{$width}\" height=\"{$height}\" scrolling=\"no\" frameborder=\"no\" src=\"https://w.soundcloud.com/player/?url=ht ... iframe><br>"; } return $link; break; case 'spotify': $regex = preg_match( '~(http\:\/\/)?open.spotify.com\/(track|album|artist)\/([a-zA-Z0-9]{22})~ix', $link, $spotify ); $uri = "{$spotify[2]}:{$spotify[3]}"; if ( $media ) { $link = "<iframe src=\"https://embed.spotify.com/?uri=spotify:{$uri}\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\" allowtransparency=\"true\"></iframe>"; } else { $link .= "<br><iframe src=\"https://embed.spotify.com/?uri=spotify:{$uri}\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\" allowtransparency=\"true\"></iframe><br>"; } return $link; break; case 'facebook': $regex = preg_match( '~(http\:\/\/)?facebook.com\/photo.php\?v=([0-9]+)~ix', $link, $facebook ); $fbid = $facebook[2]; if ( $media ) { $link = "<iframe src=\"https://www.facebook.com/video/embed?video_id={$fbid}\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\"></iframe>"; } else { $link .= "<br><iframe src=\"https://www.facebook.com/video/embed?video_id={$fbid}\" width=\"{$width}\" height=\"{$height}\" frameborder=\"0\"></iframe><br>"; } return $link; break; case 'twitchchat': $regex = preg_match( '~((http\:\/\/)?twitch.tv/([a-zA-Z0-9]+)/chat)~ix', $link, $twitch ); if ( $media ) { $link = "<iframe frameborder=\"0\" scrolling=\"no\" src=\"http://twitch.tv/{$twitch[3]}/chat?popout=\" height=\"{$height}\" width=\"{$width}\"></iframe>"; } else { $link .= "<br><iframe frameborder=\"0\" scrolling=\"no\" src=\"http://twitch.tv/{$twitch[3]}/chat?popout=\" height=\"{$height}\" width=\"{$width}\"></iframe><br>"; } return $link; break; case 'twitch': $regex = preg_match( '~((http\:\/\/)?twitch.tv/([a-zA-Z0-9]+))~ix', $link, $twitch ); if ( $media ) { $link = "<object type=\"application/x-shockwave-flash\" height=\"{$height}\" width=\"{$width}\" id=\"live_embed_player_flash\" data=\"http://www.twitch.tv/widgets/live_embed ... {$twitch[3]}\" bgcolor=\"#000000\"> <param name=\"allowFullScreen\" value=\"true\"> <param name=\"allowScriptAccess\" value=\"always\"> <param name=\"allowNetworking\" value=\"all\"> <param name=\"movie\" value=\"http://www.twitch.tv/widgets/live_embed_player.swf\"> <param name=\"flashvars\" value=\"hostname=www.twitch.tv&channel={$twitch[3]}&auto_play=true&start_volume=25\"> </object>"; } else { $link .= "<br><object type=\"application/x-shockwave-flash\" height=\"{$height}\" width=\"{$width}\" id=\"live_embed_player_flash\" data=\"http://www.twitch.tv/widgets/live_embed ... {$twitch[3]}\" bgcolor=\"#000000\"> <param name=\"allowFullScreen\" value=\"true\"> <param name=\"allowScriptAccess\" value=\"always\"> <param name=\"allowNetworking\" value=\"all\"> <param name=\"movie\" value=\"http://www.twitch.tv/widgets/live_embed_player.swf\"> <param name=\"flashvars\" value=\"hostname=www.twitch.tv&channel={$twitch[3]}&auto_play=true&start_volume=25\"> </object><br>"; } return $link; break; default: return $link; break; } } }