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; } } ?>