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;?>"/>