EGO-LOG

40代2児の父。主にプログラム学習と開発、仮想通貨、メタバース、たまに関係ないことを綴る。

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全部読み込むと通信量が増えるので、必要な部分だけ読み込む?

 

 

つづく