如何在PHP中获取缩短URL的真实地址?

时间:2013-08-17 11:46:27

标签: php javascript url url-shortener

有没有办法让我可以获得另一个(缩短的)网址指向的网址? 例如,我已将http://www.stackoverflow.com缩短为此网址:http://tinyurl.com/5b2su2

我需要PHP中的函数,如:

getTrueURL($shortened_url)
{
 // ?
}

在调用'http://stackoverflow.com'时应返回getTrueURL('http://tinyurl.com/5b2su2')。我怎么能这样做?

P.S: 如果在服务器端不可能,我也可以使用JavaScript解决方案。

2 个答案:

答案 0 :(得分:2)

我想,你需要这个:

<?php
function getTrueURL($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_exec($ch);
    $data = curl_getinfo($ch);
    return $data["url"];
}

echo getTrueURL("http://tinyurl.com/5b2su2");
?>

答案 1 :(得分:0)

<?php



function tinyurl_reverse($szAddress)
{
    $szAddress = explode('.com/', $szAddress);
    $szAddress = 'http://preview.tinyurl.com/'.$szAddress[1];
    $szDocument = file_get_contents($szAddress);
    preg_match('~redirecturl" href="(.*)">~i', $szDocument, $aMatches);

    if(isset($aMatches[1]))
    {
        return $aMatches[1];
    }

    return null;
}

echo tinyurl_reverse('http://tinyurl.com/5b2su2');
?>