勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでOGPタグ(metaタグ)を簡単に取得できる「OpenGraph.php」の利用方法

   2025/06/07  PHP

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

  関連記事

表示範囲を自由に変更可能な折れ線グラフが表示できるJSライブラリ amCharts の使用方法
表示範囲を自由に変更可能な折れ線グラフが表示できるJSライブラリ amCharts の使用方法

どこかのサイトを閲覧していた際に、恐らくはJavaScriptのライブラリで描写 ...

Dexie.jsを利用してIndexedDBを取り扱う方法
Dexie.jsを利用してIndexedDBを取り扱う方法

IndexedDBを用いて色々するという案件を見かけたが、そもそもIndexed ...

JavaScriptでフォームのバリデート時に便利な「validator.js」ライブラリの利用方法
JavaScriptでフォームのバリデート時に便利な「validator.js」ライブラリの利用方法

JavaScriptでフォームのバリデートを行う際、「半角英数字 正規表現」等で ...

ローソク足のグラフをJavaScriptで描写する方法(highstock)
ローソク足のグラフをJavaScriptで描写する方法(highstock)

株価か仮想通貨などの値動き(チャート)を図表とするローソク足のグラフを何らかの方 ...

JavaScriptでオブジェクトをzlib圧縮してCookieに保存できる「zcookies」ライブラリの利用方法
JavaScriptでオブジェクトをzlib圧縮してCookieに保存できる「zcookies」ライブラリの利用方法

あるシステムでCookieを保存している部分があった。ただ、日本語を保存している ...