【Laravel】OpenGraphでOGPをパースする

OGP

PHPでOPGをパースしようと思った時の鉄板ツールは

https://github.com/scottmac/opengraph/

だとWebで噂されてたわけだけど、

LaravelのControllerでrequire_onceで読み込んだら全力でエラーを吐いたわけ。

OGPとは

「Open Graph Protocol」の略。
FacebookやTwitterなどのSNSでwebページやブログの記事がシェアされた時、またLINEなどのメッセージ機能でページのURLを送信した時に、そのページのタイトル、URL、概要、画像を表示させる仕組みのことです。

https://www.e-webseisaku.com/column/marketing/3947/

ということでLaravelと相性の良いOpenGraphはないかと模索したら下記を発見。

https://github.com/shweshi/OpenGraph

これだ!

早速ローカル環境であるMacのComposerでインストール

% composer require "shweshi/opengraph"

するとエラー発生

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

なんでや工藤。。

こういう時はお決まりでSwapファイルを作って再度composerすればええやん!って思いながら実行するもうまくいかない。

% sudo /sbin/mkswap /var/swap.1

sudo: /sbin/mkswap: command not found

んー。mkswapがないのかぁ。

そうこうしてたら良いコマンド発見!

% php -d memory_limit=-1 /usr/local/bin/composer require "shweshi/opengraph"

なんやー、phpのメモリを一時的に上げれば良かったのか!

これで無事にライブラリのインストールが完了。

あとは

config/app.phpにて

'providers’ に

shweshi\OpenGraph\Providers\OpenGraphProvider::class,

'aliases’に

'OpenGraph' => shweshi\OpenGraph\Facades\OpenGraphFacade::class

を入れる。

あとは呼び出し元のControllerで

use OpenGraph;

して

$data = OpenGraph::fetch("https://xxxx");

って呼び出せばOK。下記のようなarrayが取得できます。

local.DEBUG: array (
  'title' => 'xxxxxxxxxxxx',
  'type' => 'article',
  'url' => 'https://xxxxxxxxxxxx',
  'image' => 'https://xxxxxxxx.jpg',
  'image:width' => '800',
  'image:height' => '400',
  'locale' => 'ja-JP',
  'description' => 'xxxxxxxxxx...',
  'site_name' => 'xxxxxxxオンライン',
)  

素敵!

ではでは。