<?php
function getEmbedUrl($url)
{
$parseURL = parse_url($url);
// YouTube
if ($parseURL['host'] === 'youtube.com') {
parse_str($parseURL['query'], $query);
$code = $query['v'];
return "//www.youtube.com/embed/{$code}?rel=0";
}
if ($parseURL['host'] === 'youtu.be') {
$path = $parseURL['path'];
return "//www.youtube.com/embed{$path}?rel=0";
}
// Vimeo
if ($parseURL['host'] === 'vimeo.com') {
$path = $parseURL['path'];
return "//player.vimeo.com/video{$path}";
}
return str_replace('http://', '//', $uri);
}
$tests = [
'https://youtube.com/watch?v=xluE7UQPOJ0' => '//www.youtube.com/embed/xluE7UQPOJ0?rel=0',
'http://youtu.be/nt0spzes2j0' => '//www.youtube.com/embed/nt0spzes2j0?rel=0',
'https://vimeo.com/172016440' => '//player.vimeo.com/video/172016440',
];
foreach($tests as $url => $embed) {
$result = getEmbedUrl($url);
var_dump($url, $embed, $result, $embed === $result);
echo PHP_EOL;
}
- Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- string(39) "https://youtube.com/watch?v=xluE7UQPOJ0"
string(41) "//www.youtube.com/embed/xluE7UQPOJ0?rel=0"
string(41) "//www.youtube.com/embed/xluE7UQPOJ0?rel=0"
bool(true)
string(27) "http://youtu.be/nt0spzes2j0"
string(41) "//www.youtube.com/embed/nt0spzes2j0?rel=0"
string(41) "//www.youtube.com/embed/nt0spzes2j0?rel=0"
bool(true)
string(27) "https://vimeo.com/172016440"
string(34) "//player.vimeo.com/video/172016440"
string(34) "//player.vimeo.com/video/172016440"
bool(true)
preferences:
273.22 ms | 405 KiB | 326 Q