【PHP】HTML 内のOGP 情報を取得する方法

$html = file_get_contents($url ); //取得するページの URL
$flag = preg_match_all( "|<meta property=["']og:([^"']+)["'] content=["']([^"']+)["'].*?>|", $html, $result );

//var_dump($result);

if($flag >0){
  for( $i = 0; $i < count($result[1]); $i++ ) {
	$opg[$result[1][$i]] = $result[2][$i];
  }
}

//------------
//表示確認
//-------------
echo $opg['title'] ."<br/>";
echo $opg['url'] ."<br/>";
echo $opg['site_name'] ."<br/>";
echo $opg['image']  ."<br/>";
echo $opg['description']  ."<br/>";

【PHP】HTML 内の OGP 情報を取得する | MEMO REAL」を参考にしました。連想配列の使えるPHPだとこういう簡略な書き方が可能で便利ですね。

preg_match_all( "<meta property="og:([^"]+)" content="([^"]+)">", $html, $ogp );

引用元の正規表現はこんな感じになってました。これだと「’’」で括られてるタイプだと取得できないので、少し修正しました。ただし私は正規表現が苦手なので見直してください。


参考:
PHP: preg_match_all - Manual
PHP: 配列 - Manual

スポンサーリンク

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。