フシギにステキな素早いヤバさ

フシギにステキな素早いヤバさを追いかけて。俺は行くだろう。

PHPではてな記法の:titleを使い、タイトルを取得した上でMarkdown記法に変換する

はてな記法では、以下のように記述すると、当該ページのタイトルを取得した上でリンクをかけてくれるので便利です。

[http://aaa.html:title]

これを、次のようなMarkdown記法に置換するコードを書いてみました。

[タイトルだよ](http://aaa.html)

ページタイトルをURLから取得する関数自体は、下記のサイトのコードを若干改変して利用しています。

PHPでWEBページのタイトルを抜き出すサンプル | Creazy!

<?php
//$body変数には、置換対象にしたいテキスト本文が入っていると思ってください。

//urlからタイトルを取得する
if(preg_match("/\[(.+?):title\]/i", $body, $matches)):

    $url = $matches[1];
            
    //マークダウンの書式でタイトルをつけて返します。
    $body = preg_replace_callback(
                "/\[(.+?):title\]/i", 
                function ($matches){
                    return '[' . getPageTitle($matches[1]) . ']('.$matches[1].')';
                },
                $body
            );

endif;


/**
 * ページタイトルを取得する関数
 */
function getPageTitle( $url ) {
    //file_get_contents関数で指定されたURLからHTML文字列を取得
    $html = file_get_contents($url); 
    //mb_convert_encoding関数で指定した文字コードに変換
    $toEncoding = 'UTF-8';
    $html = mb_convert_encoding($html, $toEncoding, "auto"); 
   //preg_match関数で正規表現を使ってtitleタグを抜き出す
    if ( preg_match( "/<title>(.*?)<\/title>/i", $html, $matches) ) {
        return $matches[1];
    } else {
        return false;
    }
}

?>