0

我想获取 Youtube URL 的视频 ID,但在共享时,该 URL 通常会压缩为 Tiny 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?

4

2 回答 2

1

您可以使用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');

注意:这是对这里的要点稍作修改的版本。

于 2013-09-26T19:38:32.377 回答
0

为了将来参考,我使用了一个更简单的函数,因为我的 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');
于 2013-09-27T01:48:59.343 回答