よくフィードのアイテムのURLがリダイレクト用のURLになっていることがあって、そのURLをそのまま使おうとすると不便なことがあります。
そこでPEARのHTTP_Requestを使ってリダイレクト先のURLを調べる方法をメモ。
<?php
require_once('HTTP/Request.php');
$params = array(
'method' => HTTP_REQUEST_METHOD_HEAD,
'http' => '1.1',
'allowRedirects' => true,
'maxRedirects' => 3,
'timeout' => 10,
'readtimeout' => array(10, 0),
);
$http = new HTTP_Request($url, $params);
$http->sendRequest();
sleep(1);
$realUrl = $http->getUrl();
調査対象のURLが必ずしもリダイレクト用のURLでない場合もあるので、メソッドはHEADにしておきます。そうすれば常にHTTPヘッダーのみ取得できて相手サーバの帯域の節約になります。リダイレクトの最大回数やタイムアウトの数値は適当に。
1回のリクエストであればsleepする必要はありませんが、ループさせる場合は同一ホストに連続でリクエストする場合もあるのでsleepしておきましょう。あとはgetUrl()メソッドを使えば最終的なリクエストURL(つまりリダイレクト先のURL)を取得することができます。
[2010-01-12] RSS フィードの URL が変わりました。お手数ですが RSS リーダーへの再登録をお願いします。
前のエントリー: « 松木里菜さんが「ザ・ベストハウス123」に3週連続で出演するよ
次のエントリー: DailyFeed(デイリーフィード)を公開しました »
トラックバック
このエントリーのトラックバックURL:
この一覧は、次のエントリーを参照しています: PEARのHTTP_RequestでURLのリダイレクト先を調べる方法:
» PEAR::HTTP_Requestでリダイレクト先のURLを取得する from kawama.jp
ググったらすぐみつかりました。 PEARのHTTP_RequestでURLのリダ... [詳しくはこちら]
タイトル:
URL:
リンク用HTMLタグ:




