![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
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
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
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.
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
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
![Smile :)](./images/smilies/icon_e_smile.gif)
![Smile :)](./images/smilies/icon_e_smile.gif)
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
![Smile :)](./images/smilies/icon_e_smile.gif)
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
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
![Smile :)](./images/smilies/icon_e_smile.gif)
I hope some of you guys will find this function as useful as I personally do
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
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; } } }