• ベストアンサー

phpでのURL取得について

phpにて、ソース内のURLを取得するプログラムを作っています。 その中に短縮URLが混ざっており、取得しても例えば“http://tinyurl.com/?aaa”のような形になってしまいます。 この“http://tinyurl.com/?aaa”が“http://www.yahoo.co.jp/index.html”の短縮URLなら“http://www.yahoo.co.jp/index.html”の形で取得したいのですが、phpで可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#111181
noname#111181
回答No.1

できます。 下記に用意した関数を使ってみてください。 引数 $tinyurl に tinyURL.com で得た短縮URLを入力してください。 元のURLが返されます。 変換に失敗した場合はFALSEが返ります。 ----------------------------------- function tiny2longURL($tinyurl) { //ソケット通信でtinyURL.comを呼び出す $arr = parse_url($url); $request = "GET {$arr['path']} HTTP/1.1\r\n"; $request .= "Host: {$arr['host']}\r\n"; $request .= "User-Agent: PHP/" . phpversion() . "\r\n\r\n"; $fp = fsockopen($arr['host'], 80); if (! $fp) return FALSE; fputs($fp, $request); //レスポンス解析 while (! feof($fp)) { $res = fgets($fp); if (preg_match('/^Location: (.*)$/i', $res, $arr) > 0) return $arr[1]; } fclose($fp); return FALSE; }

examine66
質問者

お礼

解決しました! 迅速かつ的確なご回答をありがとうございました。

関連するQ&A

専門家に質問してみよう