5

私はRSSリンクからデータをマイニングし、次のようなURLを取得します。

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

....そして、Webブラウザでリンクにアクセスすると、次のようなものにリダイレクトされます。

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

ユーザーをURL「b」にリダイレクトするURL「a」が与えられたときにあなたにURL「b」を返す関数をPHPで書く方法はありますか?

4

2 に答える 2

10

どうぞ:

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がjavascriptを介してnewUrlにリダイレクトしていないことが確実な場合は、次を使用してnewUrlの本体をフェッチすることを回避することもできます。

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

実行を高速化するため$res = curl_exec($ch);に、関数の前に上記の行を入れてください。getRedirect

于 2012-09-05T12:59:56.973 に答える
1
public function getRedirect($url) {
    $headers = get_headers($url, 1);
    if (array_key_exists("Location", $headers)) {
        $url = getRedirect($headers["Location"]);
    }
    return $url;
}
于 2012-09-05T12:59:49.980 に答える