获取 Tiny URL 的真实 URL 并存储为 PHP 变量


Get a Tiny URL's real URL and store as PHP variable

我想获取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');