勉強したことのメモ

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

  関連記事

PHPでルーティング用ライブラリ「AltoRouter」の利用方法

PHPフレームワークのCodeIgniterを勉強していた際にルーティング機能が ...

PHPで画像アップロード、リサイズ、形式変換(jpg->webp等)はclass.upload.phpが便利

今までPHPで画像関連の処理を行う場合、リサイズの時のみsmart_resize ...

PHPにて「php-ulid」ライブラリを用いてULIDを生成する方法

先日MySQLにてUUIDを発行するメモを書いたがUUID v1だと生成時間によ ...

PHPでGoogle翻訳を手軽に扱えるライブラリ「google-translate-php」の利用方法

サイト内で一部テキストのGoogle翻訳を行いたい。ただ、Google Clou ...

PHPでJavaScriptを圧縮するライブラリ「JShrink」の利用方法

サイト内でJavaScriptを用いる場合、外部のライブラリやプラグインだと圧縮 ...