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

PHPでOPGをパースしようと思った時の鉄板ツールは
https://github.com/scottmac/opengraph/
だとWebで噂されてたわけだけど、
LaravelのControllerでrequire_onceで読み込んだら全力でエラーを吐いたわけ。
OGPとは
「Open Graph Protocol」の略。
https://www.e-webseisaku.com/column/marketing/3947/
FacebookやTwitterなどのSNSでwebページやブログの記事がシェアされた時、またLINEなどのメッセージ機能でページのURLを送信した時に、そのページのタイトル、URL、概要、画像を表示させる仕組みのことです。
ということで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オンライン',
)
素敵!
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません