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

PHP,PHP 取得

HTMLからtitleやog_imageなどを取得する方法

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

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

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