リンクをカードにするプラグインを作ろう!(5)metaタグを取得する

PHP

引き続きリンク先のタイトルと概要文を取得します。

前回まで

リンク先から取得したHTMLを見て、OGPの情報を取得しました。

[link url=”https://popozure.info/20180812/13260″]

OGPが設定されていないサイト

OGPが設定されているサイトは上手くタイトルと概要文が取得できましたが、facebookでのシェアを意識していないサイトはOGP情報が設定されていません。

外部ヘッダー
www.metro.tokyo.jp
外部リンク
東京都公式ホームページ
東京都庁の公式ホームページ。都政に関する最新情報、記者会見、都議会や各局の情報、統計、入札・契約情報、知事への提言など。
外部ボタン
←サイト名称
←タイトル
http://www.metro.tokyo.jp/ ←URL
←概要文

titleタグとmetaタグのdescriptionを設定しているサイトは多いので、そっちを取得してみます。

コードを書いていく

titleを取得する

OGPのタイトルが取得できなかった場合、titleタグに書かれた文字を取得します。

[php title=”popo-blogcard.php” start-line=”31″ mark=”3-6″] if (preg_match(‘/property=”og:title”\s*content=”([^”]*)/si’, $html, $m ) ) {
$title = esc_html($m[1]);
} else {
if (preg_match(‘/<\s*title\s*[^>]*>\s*([^<]*)\s*<\s*\/title\s*[^>]*>/si’, $html, $m ) ) {
$title = esc_html($m[1]);
}
}
if (preg_match(‘/property=”og:description”\s*content=”([^”]*)/si’, $html, $m ) ) {
$excerpt = esc_html($m[1]);
}
if (preg_match(‘/property=”og:site_name”\s*content=”([^”]*)/si’, $html, $m ) ) {
$site_name = esc_html($m[1]);
}[/php]

descriptionを取得する

OGPの概要文が取得できなかった場合、metaタグのdescriptionに書かれた文字を取得します。

[php title=”popo-blogcard.php” start-line=”31″ mark=”10-13″] if (preg_match(‘/property=”og:title”\s*content=”([^”]*)/si’, $html, $m ) ) {
$title = esc_html($m[1]);
} else {
if (preg_match(‘/<\s*title\s*[^>]*>\s*([^<]*)\s*<\s*\/title\s*[^>]*>/si’, $html, $m ) ) {
$title = esc_html($m[1]);
}
}
if (preg_match(‘/property=”og:description”\s*content=”([^”]*)/si’, $html, $m ) ) {
$excerpt = esc_html($m[1]);
} else {
if (preg_match(‘/name=”description”\s*content=”([^”]*)/si’, $html, $m ) ) {
$excerpt = esc_html($m[1]);
}
}
if (preg_match(‘/property=”og:site_name”\s*content=”([^”]*)/si’, $html, $m ) ) {
$site_name = esc_html($m[1]);
}[/php]

ドメイン名を取得する

OGPのサイト名称が取得できなかった場合、URLからドメイン名を取得します。

[php title=”popo-blogcard.php” start-line=”31″ mark=”17-19″] if (preg_match(‘/property=”og:title”\s*content=”([^”]*)/si’, $html, $m ) ) {
$title = esc_html($m[1]);
} else {
if (preg_match(‘/<\s*title\s*[^>]*>\s*([^<]*)\s*<\s*\/title\s*[^>]*>/si’, $html, $m ) ) {
$title = esc_html($m[1]);
}
}
if (preg_match(‘/property=”og:description”\s*content=”([^”]*)/si’, $html, $m ) ) {
$excerpt = esc_html($m[1]);
} else {
if (preg_match(‘/name=”description”\s*content=”([^”]*)/si’, $html, $m ) ) {
$excerpt = esc_html($m[1]);
}
}
if (preg_match(‘/property=”og:site_name”\s*content=”([^”]*)/si’, $html, $m ) ) {
$site_name = esc_html($m[1]);
} else {
$m = parse_url($url );
$site_name = $m[‘host’];
}[/php]

タイトルと概要文が取得できた

もう一度試してみます。

外部ヘッダー
www.metro.tokyo.jp
外部リンク
東京都公式ホームページ
東京都庁の公式ホームページ。都政に関する最新情報、記者会見、都議会や各局の情報、統計、入札・契約情報、知事への提言など。
外部ボタン
www.metro.tokyo.jp ←サイト名称
東京都公式ホームページ ←タイトル
http://www.metro.tokyo.jp/ ←URL
東京都庁の公式ホームページ。都政に関する最新情報、記者会見、都議会や各局の情報、統計、入札・契約情報、知事への提言など。 ←概要文

OGPが設定されていないサイトでもタイトルと概要文を取得することができました。

今回のコード

今回はここまでです。

[php title=”popo-blogcard.php”]]*>\s*([^<]*)\s*<\s*\/title\s*[^>]*>/si’, $html, $m ) ) {
$title = esc_html($m[1]);
}
}
if (preg_match(‘/property=”og:description”\s*content=”([^”]*)/si’, $html, $m ) ) {
$excerpt = esc_html($m[1]);
} else {
if (preg_match(‘/name=”description”\s*content=”([^”]*)/si’, $html, $m ) ) {
$excerpt = esc_html($m[1]);
}
}
if (preg_match(‘/property=”og:site_name”\s*content=”([^”]*)/si’, $html, $m ) ) {
$site_name = esc_html($m[1]);
} else {
$m = parse_url($url );
$site_name = $m[‘host’];
}
}
curl_close($ch );
$html = ‘

‘.$site_name.’
‘.$title.’
‘.$url.’
‘.$excerpt.’
‘;
return $html;
}
}
$popo_blogcard = new popo_blogcard;[/php]

次回は・・・

UTF-8以外の文字コードに対応しようと思います。

[link url=”https://popozure.info/20180818/13278″]

では、この辺で。(^-^)o

[amzn-link asin=”4774187062″][amzn-link asin=”B00M939Y0I”][amzn-link asin=”4798143774″][amzn-link asin=”B075S15Y3S”][amzn-link asin=”B079Q31VLZ”]

コメント

タイトルとURLをコピーしました