PHP | HTMLからtitleやog:imageなどを取得する方法

2023-10-07PHP 取得,PHP

PHP | HTMLからtitleやog:imageなどを取得する方法

PHPを使って、file_get_contents()などで取得したHTMLコードからリンクカード用などにページタイトルや「og:image」を取得したいケースは少なくありません。

このページではHTMLから「title」「og:image」などのメタ情報の中身を取得する方法を紹介しています。

titleからページタイトルを取得する方法

サンプルではこのブログの適当な記事ページURLから、ページタイトルを取得しています。

  • file_get_contents()でHTMLデータを取得
  • mb_convert_encoding()は文字化け回避用
  • preg_match()の正規表現で<title></title>間のHTML・文字列を取得
  • 配列として取得しているので[1]のデータを取得、表示
$url = 'https://1-notes.com/phaser3-create-tile-map-with-tiled/';
$html = mb_convert_encoding(file_get_contents($url), "utf-8", "auto");
preg_match('/<title>(.*?)</title>/', $html, $result);

$title = $result[1];
echo $title;

// Phaser 3 | タイルマップ作成と衝突処理 | ONE NOTES

og:imageを取得する方法

サンプルではこのブログの適当な記事ページURLから、「og:image」を取得しています。

  • file_get_contents()でHTMLデータを取得
  • mb_convert_encoding()は文字化け回避用
  • preg_match()の正規表現でog:image内の画像URLを取得
  • 配列として取得しているので[1]のデータを取得、表示
$url = 'https://1-notes.com/phaser3-create-tile-map-with-tiled/';
$html = mb_convert_encoding(file_get_contents($url), "utf-8", "auto");
preg_match('/<meta property="og:image" content="(.*?)"/', $html, $result);

$og_image = $result[1];
echo $og_image;

// https://1-notes.com/wp-content/uploads/2020/07/タイルマップ作成と衝突処理.png

titleとog:imageを両方取得

ページタイトルと「og:image」を両方取得する時用のサンプルコードです。

外部リンク生成の場合、「og:image」は設定していないWEBサイトも多い為、注意が必要です。

$url = 'https://1-notes.com/phaser3-create-tile-map-with-tiled/';
$html = mb_convert_encoding(file_get_contents($url), "utf-8", "auto");
preg_match('/<title>(.*?)</title>/', $html, $result);
$title = $result[1];
preg_match('/<meta property="og:image" content="(.*?)"/', $html, $result);
$og_image = $result[1];

PHP 取得,PHP

Posted by Yousuke.U