Получить URL-адрес, данный URL-адрес перенаправляется на

Я добываю данные из rss-ссылок и получаю кучу URL-адресов, таких как:

http://feedproxy.google.com/~r/electricpig/~3/qoF8XbocUbE/

…. и если я получаю доступ к ссылкам в своем веб-браузере, я перенаправлен на что-то вроде:

http://www.electricpig.co.uk/stuff .

Есть ли способ в php написать функцию, которая при указании URL-адреса «a», перенаправляющего пользователя на URL-адрес «b», возвращает URL-адрес «b»?

Ну вот:

function getRedirect($oldUrl) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $oldUrl); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); $newUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); curl_close($ch); return $newUrl; } 

Функция требует cURL и использует CURLINO_EFFECTIVE_URL . Вы можете посмотреть его на phpdoc здесь

РЕДАКТИРОВАТЬ:

если вы уверены, что oldUrl не перенаправляет на newUrl через javascript, тогда вы также можете избежать выборки тела newUrl, используя

 curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 

Поместите вышеуказанную строку до $res = curl_exec($ch); в функции getRedirect для ускорения выполнения.

 public function getRedirect($url) { $headers = get_headers($url, 1); if (array_key_exists("Location", $headers)) { $url = getRedirect($headers["Location"]); } return $url; }