PHPでOGPタグ(metaタグ)を簡単に取得できる「OpenGraph.php」の利用方法
2025/06/07
PHPでOGPタグ(metaタグ)を取得する際、file_get_contentsやcurlでページ内容を取得し正規表現でタグ部分を抽出していたがこれが結構面倒くさい。何とかならないか調べたところ「OpenGraph.php」ライブラリが良さそう。ライブラリの利用方法とproductタグも取得できるよう変更方法をメモ。
OpenGraph.php
以下よりOpenGraph.phpをダウンロードし、適当なディレクトリにアップロードしておく。
https://github.com/scottmac/opengraph/
利用方法
ソースコード
<?php require 'OpenGraph.php'; $url = 'https://taitan916.info/blog/archives/6910'; $graph = OpenGraph::fetch($url); var_dump($graph);
出力例
上記ソースコードを実行すると以下内容が出力される。
object(OpenGraph)#4 (2) {
["_values":"OpenGraph":private]=>
array(10) {
["locale"]=>
string(5) "ja_JP"
["site_name"]=>
string(27) "勉強したことのメモ"
["type"]=>
string(7) "article"
["title"]=>
string(82) "MySQLで「Uncaught mysqli_sql_exception: BIGINT ~~」エラーの対応方法"
["description"]=>
string(204) "MySQLにて「Uncaught mysqli_sql_exception: BIGINT UNSIGNED value is out of range」というエラーが発生した。原因はUNSIGNED設定しているカラムを負の数にしようとした点。"
["url"]=>
string(41) "https://taitan916.info/blog/archives/6910"
["image"]=>
string(70) "https://taitan916.info/blog/wp-content/uploads/2014/05/msyql-image.gif"
["image:secure_url"]=>
string(70) "https://taitan916.info/blog/wp-content/uploads/2014/05/msyql-image.gif"
["image:width"]=>
string(3) "300"
["image:height"]=>
string(3) "167"
}
["_position":"OpenGraph":private]=>
int(0)
}
productタグの取得
ECサイトだと以下のようなproductタグが存在する場合があり、OpenGraph.phpはそのままだと取得できない。
<meta property="product:price:amount" content="10000"> <meta property="product:price:currency" content="JPY">
productタグを取得するためにはOpenGraph.phpの105行目辺りに以下を追加すること。
if ($tag->hasAttribute('property') &&
strpos($tag->getAttribute('property'), 'product:') === 0) {
$key = strtr(substr($tag->getAttribute('property'), 8), '-', '_');
$page->_values[$key] = $tag->getAttribute('content');
}
所感
正規表現がいらずソースコードも見やすくなるので今後はOpenGraph.phpを使っていきたいところ。
関連記事
-
-
PHPでダミー画像(プレースホルダー画像)を表示する「PHP-Dummy-Image-Generator」の利用方法
先日JavaScriptでダミー画像(プレースホルダー画像)を表示する「Hold ...
-
-
PHPでランダムなカラーコードを生成する「RandomColor.php」ライブラリの利用方法
PHPでランダムなカラーコードを生成したい。自作するとなると「0~9」「a~f」 ...
-
-
JavaScript / PHPにて「lz-string」を用いてデータの圧縮・展開する方法
文字数が多いGETパラメータを送信したいというケースがあった。また、送信側はJa ...
-
-
PHPで簡単にカレンダーを生成できるライブラリ「PHP Calendar」の利用方法
PHPでカレンダーを描写したいということがたまにある。今までバニラPHPで書いて ...
-
-
PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方
PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...