上手くタイトルと概要文が取れないサイトの対応をします。
前回まで
OGPが設定されていないサイトのタイトルと概要文を取得しました。
[link url=”https://popozure.info/20180817/13271″]
UTF-8以外の文字コードのサイト
文字コードがUTF-8以外の場合、正しく文字を扱うことが出来ず、タイトルや概要文が取得できません。
UTF-8に文字コードを変換すると上手く扱うことが出来ます。
文字コードがEUC-JPのサイト
外部ヘッダー 4Gamer.net ― 日本最大級の総合ゲーム情報サイト。最新ゲームのニュース,レビュー...ゲームの最新ニュースをお届けします。また,ゲームのタイトルのユーザーレビューの募集/掲載や,発売スケジュールなども用意。遊びたいゲームを探す時にご活用ください!外部ボタン
←サイト名称 | |
←タイトル | |
https://www.4gamer.net/ | ←URL |
←概要文 |
文字コードがシフトJISのサイト
外部ヘッダー NTTグループの安心オンラインストア - NTT-X StoreNTTグループが運営する安心・安全の通販ショップ OCN オンラインショップ(旧NTT-X Store)。「PC・家電」カテゴリでは、パソコン、液晶ディスプレイ、デジカメ、デジタル機器、ネットワークカメラ、家電などを激安価格と即納で通信販売!送料無料やクーポンなどお得な商品を多数掲載中です。外部ボタン
←サイト名称 | |
←タイトル | |
https://nttxstore.jp/ | ←URL |
←概要文 |
コードを書いていく
文字コードを変換する
cURLで取得した$htmlの文字コードをUTF-8に変換します。
[php title=”popo-blogcard.php” start-line=”26″ mark=”6″] if (curl_errno($ch ) ) {
$site_name = ”;
$title = $url;
$excerpt = ”;
} else {
$html = mb_convert_encoding($html, ‘UTF-8’, ‘ASCII,JIS,UTF-8,EUC-JP,SJIS’ );
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]);
}
}[/php]
タイトルと概要文が取得できた
もう一度試してみます。
文字コードがEUC-JPのサイト
外部ヘッダー 4Gamer.net ― 日本最大級の総合ゲーム情報サイト。最新ゲームのニュース,レビュー...ゲームの最新ニュースをお届けします。また,ゲームのタイトルのユーザーレビューの募集/掲載や,発売スケジュールなども用意。遊びたいゲームを探す時にご活用ください!外部ボタン
www.4gamer.net | ←サイト名称 |
4Gamer.net ― 日本最大級の総合ゲーム情報サイト。最新ゲームのニュース,レビューはここで! | ←タイトル |
https://www.4gamer.net/ | ←URL |
ゲームの最新ニュースをお届けします。また,ゲームのタイトルのユーザーレビューの募集/掲載や,発売スケジュールなども用意。遊びたいゲームを探す時にご活用ください! | ←概要文 |
文字コードがシフトJISのサイト
外部ヘッダー NTTグループの安心オンラインストア - NTT-X StoreNTTグループが運営する安心・安全の通販ショップ OCN オンラインショップ(旧NTT-X Store)。「PC・家電」カテゴリでは、パソコン、液晶ディスプレイ、デジカメ、デジタル機器、ネットワークカメラ、家電などを激安価格と即納で通信販売!送料無料やクーポンなどお得な商品を多数掲載中です。外部ボタン
nttxstore.jp | ←サイト名称 |
NTTグループの安心オンラインストア – NTT-X Store | ←タイトル |
https://nttxstore.jp/ | ←URL |
NTTグループが運営する安心・安全の通販ショップNTT-X Store。パソコン、液晶ディスプレイ、デジカメ、デジタル機器、ネットワークカメラ、家電などを激安価格と即納で通信販売!送料無料やクーポンなどお得な商品を多数掲載中です。 | ←概要文 |
今回のコード
今回はここまでです。
[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 = ‘
return $html;
}
}
$popo_blogcard = new popo_blogcard;[/php]
次回は・・・
スタイルシートを設定してブログカードっぽい見た目にしようと思います。
[link url=”https://popozure.info/20180819/13307″]
では、この辺で。(^-^)o
[amzn-link asin=”4774187062″][amzn-link asin=”B00M939Y0I”][amzn-link asin=”4798143774″][amzn-link asin=”477414164X”][amzn-link asin=”B079VVPN46″]
コメント
ぽぽろん様
始めまして。Pz-LinkCardを大変便利に利用させて頂いております。
抜粋文(概要文)について教えて頂きたいのですが
Metaタグのdescription(og:description)の内容を表示させることは可能でしょうか。
お手数ですがご教示頂けると幸いです。
よろしくお願いいたします。
谷内さん、ご利用&コメントありがとうございます。
Pz-LinkCardでは、外部リンクの場合、「og:description」、「meta description」の順番で取得して表示しています。
内部リンクの場合、記事内容から取得していますが、記事取得方法を「抜粋文が設定されている投稿はそちらを優先する」にすると、descriptionと同じ文が取得できると思います。
どちらかのサイトで上手く取得できていない状況でしょうか?