我想获取Youtube网址的视频ID,但通常该网址在共享时被压缩成一个微小的URL。
例如,我有一个脚本,它根据视频ID获取Youtube视频的缩略图=
<?php $vlog = "OeqlkEymQ94"; ?>
<img src="http://img.youtube.com/vi/<?=$vlog;?>/0.jpg" alt="" />
当我从中提取它的 URL 是
http://www.youtube.com/watch?v=OeqlkEymQ94
但有时 URL 是一个很小的 URL,所以我必须弄清楚如何返回真正的 URL,以便我可以使用它。
http://tinyurl.com/kmx9zt6
是否可以通过 PHP 检索 URL 的真实 URL?
您可以使用
get_headers()
或cURL
来获取Location
标头:
function getFullURL($url) {
$headers = get_headers($url);
$headers = array_reverse($headers);
foreach($headers as $header) {
if (strpos($header, 'Location: ') === FALSE) {
$url = str_replace('Location: ', '', $header);
break;
}
}
return $url;
}
用法:
echo getFullURL('http://tinyurl.com/kmx9zt6');
注意:这是此处要点的略微修改版本。
为了将来参考,我使用了一个更简单的函数,因为我的 Tiny URL 总是会解析为 Youtube,并且标题几乎总是相同的:
function getFullURL($url) {
$headers = get_headers($url);
$url = $headers[4]; //This is the location part of the array
$url = str_replace('Location: ', '', $url);
$url = str_replace('location: ', '', $url); //in my case the location was lowercase, but it can't hurt to have both
return $url;
}
用法-
echo getFullURL('http://tinyurl.com/kmx9zt6');