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のエラーメッセージ及びvar_dumpを見やすく表示するライブラリ「Tracy」の利用方法
ここのところPHPでの開発時にvar_dumpをツールバー表示する「Kint」及 ...
-
-
PHPのHTTPリクエストライブラリ「Requests for PHP」の利用方法
PHPで外部のAPI等にリクエストする際に可能であればfile_get_cont ...
-
-
PHPでデータベースを取り扱いやすくなるORMライブラリ「idiorm」の利用方法
Codeigniterでデータベースを取り扱う際にクエリビルダクラスを用いて可読 ...
-
-
PHPでシンプルな英数字のCAPTCHAを「Gregwar / Captcha」ライブラリで実装する方法
PHPでシンプルなランダム英数字のCAPTCHAを実装したい。「Gregwar ...
-
-
Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法
先日PHPのエラーメッセージを見やすくするwhoopsの利用方法をメモしたが導入 ...