URLからタイトルを取得して参考文献リストを作る

このサイトの投稿の下部の方にある、こういう(↓)参考にしたサイトやページのリストを作るときのメモ。

やりたいのは2つ。

  1. URL入れるだけでタイトルも取得する
  2. URLがあまりに長い場合は省略する

PHP

<ul>
    <?php foreach ($refas as $refa) { ?>
        <?php
        $url = $refa[0];
        if (mb_strlen($url) > 80) {
            $urltxt = mb_substr($url, 0, 80) . '...';
        } else {
            $urltxt = $url;
        }

        $source = @file_get_contents($url);
        if (preg_match('/<title>(.*?)<\/title>/i', mb_convert_encoding($source, 'UTF-8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS'), $result)) {
            $title = $result[1];
        }
        ?>
        <li><?php if ($title) { ?>
                <?php echo $title; ?><br>
            <?php } ?>
            <a href="<?php echo $url; ?>" target="_blank" rel="noopener"><?php echo $urltxt; ?></a>
        </li>
    <?php } ?>
</ul>
mb_strlen()文字列の長さを取得する。
mb_substr()文字列の一部を取得する。
@(エラー制御演算子)その式により生成されたエラーメッセージが無視される。
file_get_contents()ファイルの内容を全て文字列に読み込む。
preg_match()正規表現によるマッチングを行う。
mb_convert_encoding()文字エンコーディングを変換する。

URLは投稿のカスタムフィールドで入力しています。

参考