Twitterなどで短縮URL化したものを展開する ITかあさん

ITかあさん

Twitterなどで短縮URL化したものを展開する

TwitterでURL付きでツイートするとき、よく短縮URL化します。短縮URLのままだと、URLの正規化が出来ないため、ブログにログを張ってもSEO効果を出せません。Twitter以外でツイートしたものを表示する際は、短縮したものを展開したいものです。

結論:header locationを使う

短縮されたURLにアクセスすると、リダイレクトのような動きをして、元のURLを表示してくれますから、これを利用してlocationでURLを取得できないかと思っていましたが、同じことを考える人は普通にいるものですね。

参考:PHPで短縮URLを展開するコード

実際のコードは以下のようになります。

function square($short_url){
$h = get_headers($short_url,true);
if(isset($h['Location'])){
$long_url = $h['Location'];
if(is_array($long_url)){
$long_url = end($long_url);
}
}
return $long_url;
} echo square($short_url = '短縮URL');

応用:ついっぷるふぉとから投稿した画像を取得する

画像を投稿した際、URLが短縮されます。しかし、短縮されない、元のURLの最後の何文字かは画像のIDが書かれています。
つまり、これを取得きれば、短縮されたURLからTwitpicやついっぷるふぉとなどのURLから画像を引っ張ることが出来るのです。
(私はこれがやりたくてけっこうチマチマ作業してました。)

function square($short_url){
$h = get_headers($short_url,true);
if(isset($h['Location'])){
$long_url = $h['Location'];
if(is_array($long_url)){
$long_url = end($long_url);
}
}
return $long_url;
}

//テスト投稿したついっぷるふぉとの短縮URL
$URL = square($short_url = 'http://bit.ly/xxeAs8');
//ついっぷるフォトは最後の5文字が画像のID
$str = substr($URL, -5);

画像IDが取得できたら後はsrcの中に入れてあげるだけで完了。

<img src="http://p.twpl.jp/show/large/<?php echo $str;?>"/>
初夏のJavaScript祭 in サーキュレーションビル ForPro