Вы можете использовать CURL, чтобы развернуть короткий URL.
Попробуйте это:
function traceUrl($url, $hops = 0)
{
if ($hops == MAX_URL_HOPS)
{
throw new Exception('TOO_MANY_HOPS');
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$r = curl_exec($ch);
if (preg_match('/Location: (?P<url>.*)/i', $r, $match))
{
return traceUrl($match['url'], $hops + 1);
}
return rtrim($url);
}
Вы можете использовать эту функцию, как и traceUrl('http://bit.ly/example')
. Эта функция является рекурсивной в том смысле, что она даже найдет короткие URL-адреса, которые будут сокращены (если это когда-либо произойдет). Убедитесь, что вы установили постоянную MAX_URL_HOPS
. Я использую define('MAX_URL_HOPS', 5);
.