Laravel投稿サイト構築.74 -URLの埋め込み(迂回路)-
■前回
リンクの埋め込みは一旦やめて、他の策を探すことにする。
■URLから関連情報を取得
リンクURLからページ情報を取得して、ページタイトルを取得する。
アンカーにURLと取得したページタイトルを設定することで、
参考URLのリンク先がわかるようにする。
--
Modelファイルでテーマ一覧取得処理
foreach( $threads as $thread ){
if( strlen(trim($thread->link_url)) >= 1 ){
// HTML読み込み
$html = mb_convert_encoding(file_get_contents($thread->link_url), "utf-8", "auto");
// title
$thread->link_title = '参考URL';
preg_match('/<title>(.*?)<\/title>/', $html, $result);
foreach( $result as $key => $value ){
if( $key == 1 ){
if( strlen($value) >= 30 ){
$thread->link_title = mb_substr($value, 0, 30) . '...';
} else {
$thread->link_title = $value;
}
break;
}
}
}
}
-----
URLからHTMLを読み込む。
HTMLからTITLEタグを取得。
タイトルが長い場合は区切る(今回は30文字)。
タイトル取得にわざわざforeach使っていて、添え字一発で取得できないのが原因不明。単純な記述ミスな気がする。
-----
bladeファイルでは、
-----
<a href="{{$thread->link_url}}" target="_blank">{{$thread->link_title}}</a>
-----
とする。
■動作確認
OKですかね。
■課題
- OGPの設定があるページはそちらを利用する。
- Twitterページのリンクなどtitleが取得できなかったページの対応。
- HTML全部読み込むと通信量が増えるので、必要な部分だけ読み込む?
つづく