OGPを超簡単にパース可能なPHPスクリプト OpenGraph.php ITかあさん

ITかあさん

OGPを超簡単にパース可能なPHPスクリプト OpenGraph.php

OGPを超簡単にパース可能な OpenGraph.php

Open Graph protocolを超簡単にパースするスクリプトを見つけましたのでご紹介します。

その前にOGP(The Open Graph protocol)とは何ですか?

割と最近までOGPの存在すら知らなかったのですが、FacebookなんかであるURLをシェアしたり、タイムラインの中にURLを書き込んだりすると
FacebookのOGP取得結果

FacebookのOGP取得結果

こんな風に写真やちょっとしたテキストが表示されます。

SNSとウェブページを連携させるための情報をコンピュータが読めるように記述したもの

それがOGPですね。

FacebookOGPの書き方

タイムラインなど、URLがシェアされたとき ここぞ、と言うところの画像やテキストを指定します。
ヘッダー内に書くのが基本ですね。
これはある日あるときの私のTweetpicのOGP情報です。
こんな風に、metaタグとして、ヘッダーに書いてあげまず。

<meta property="og:title" content="A photo from @chihiro_kaasan"/>
<meta property="og:type" content="twitpicfbapp:photo" />
<meta property="og:url" content="http://twitpic.com/ajyzdp"/>
<meta property="og:image" content="http://twitpic.com/show/thumb/ajyzdp"/>
<meta property="og:site_name" content="TwitPic"/>
<meta property="fb:app_id" content="331538683530736" />

ここからが本題。OGPのパース方法

では、OGPを取得するにはどうすればいいでしょうか?
このOpenGraph.phpを使えば、画像はもちろんURLやサイト名などのOGP情報を簡単に取得することが出来ます。

OpenGraph.phpの使い方

何と、ワンツーステップ!OpenGraph.phpを読み込んで、URLを指定するだけでパース完了!
(なんともおいしそうな豚の角煮のレシピ:クックパドより)

//OGPを簡単パースするOpenGraphを読み込み
require_once('OpenGraph.php');
//URLを指定
$graph = OpenGraph::fetch('http://cookpad.com/recipe/1606942');

するとオブジェクトで結果が返ってきます。

OpenGraph Object
(
    [_values:OpenGraph:private] => Array
        (
            [type] => cookpad:recipe
            [title] => やわらか豚の角煮を簡単に by mi0921
            [description] => 【話題入り・つくれぽ300件感謝です♡】圧力鍋無しでOK。とろとろ〜★もちろん箸で切れます!煮る時間は約2時間!
            [image] => http://d3921.cpcdn.com/recipes/1606942/120x120c/8c530792c847977d1ecdf281ba5ec170.jpg?u=3586013&p=1322668071
            [url] => http://cookpad.com/recipe/1606942
        )

    [_position:OpenGraph:private] => 0
)

オブジェクトですので、HTML中に表示してあげるなら以下のようにします。

<p><?php echo($graph->title);?></p>
<img src="<?php echo($graph->image);?>" />

とっても簡単ですね。

取得例

DEMO

これを使いこなせば、Facebookのようなコメント機能やOGPを利用したちょっとしたWEBサービスなど作れそうでいいですね!
OGPが世の中にもっと普及しますように!

初夏のJavaScript祭 in サーキュレーションビル ForPro