web関連
【php】cURLを使って外部サイトtitleを取得してリンクを生成するショートコード
Warning: Undefined array key "title" in /home/twotone/twotone.me/public_html/wp-content/themes/twotone_v3/functions.php on line 789
Warning: Undefined array key "title" in /home/twotone/twotone.me/public_html/wp-content/themes/twotone_v3/functions.php on line 789
Warning: Undefined array key "title" in /home/twotone/twotone.me/public_html/wp-content/themes/twotone_v3/functions.php on line 789
Warning: Undefined array key "title" in /home/twotone/twotone.me/public_html/wp-content/themes/twotone_v3/functions.php on line 789
file_get_contentsを使って外部サイト情報を取得していたけど、cURLを使ったほうが処理が早いらしいのでそれを使って外部サイトのタイトル取得したときの備忘録
link:https://twotone.me/web/3814/
cURLを使って外部サイトtitleを取得してリンクを生成するショートコード
file_get_contents
よりcURL
を使ったほうが読み込みが早くなるとのことだったので試しに使ってみた
function outbound_link_comment( $atts, $content = null ) {
// 「cURL」を使ってurlから外部コンテンツ情報を引っ張ってくる
$ch = curl_init();//初期化
curl_setopt($ch, CURLOPT_URL, $atts['url']);//URLの指定
curl_setopt($ch, CURLOPT_HEADER, false);//ヘッダーの有無
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//データを文字列に変換
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//SSL証明書の検証
curl_setopt($ch, CURLOPT_TIMEOUT, 30);//タイムアウトする時間
$html = curl_exec($ch);//処理実行
curl_close($ch);//処理終了
// 文字コード「utf-8」に変換する
$html = mb_convert_encoding($html,"utf-8","ASCII, JIS, UTF-8, SJIS");
// metaタイトルの中身を正規表現で取得
$pattern = '/<title>(.*)</title>/';
// 置換
// ※preg_match(検索するパターン、検索される文字列、検索結果代入)
if( preg_match($pattern, $html, $result) ){
return '<div class="ex_linkbox"><a href="'. $atts['url'] .'" target="_blank">'. $result[1] .'</a><div class="comment">' . $content . '</div></div>';
}else{
// エラーの時
return 'No match' . PHP_EOL;
}
}
add_shortcode('oblink_comment', 'outbound_link_comment');
oblink_comment url=""][/oblink_comment
※'['と']'が最初と最後に入る
コメント入れられるようにしてみた
↓実際に使ってみた
link:https://blog.ver001.com/file_get_contents_curl/
utf-8以外だと文字化けするので対処
utf-8以外だと文字化けをするのでその処理
mb_convert_encoding($html,"utf-8","ASCII, JIS, UTF-8, SJIS");
文字コードが不明なとき第三引数にautoを設定することで「ASCII→JIS→UTF-8→EUC-JP→SJIS」って順番に処理をしてくれるみたいだけどエラー吐いたので上記のように設定
link:https://qiita.com/nito128/items/b78d44c414fbb918ec10
link:https://singoro.net/note/title-meta-get/
前回作成したショートコードからコメントを入れられる様にしたのと「cURL」というのを使ってみた
今度はショートコード複数使ってたらそれらをまとめて1回で処理するように書き直そうかな
多分ショートコードがあるたびに関数呼び出していると思うし、「file_get_contents」「cURL」の他に「curl_multi」っていうのもあるみたいなので