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

いきなりPHPなネタですが。

マッシュアップ系のサービスを作っていると、指定されたURLのページタイトルを取得したい時が頻繁にあります。そんな時、いわゆるスクレイピングしてタイトルを抜き出すんですが、近頃たくさんでまわっているスクレイピングツールやら、ライブラリやら使わなくてもページタイトルくらいは抜き出せるんで、簡単なサンプルを書いてみる。

<?php
/**
 * ページタイトルを取得する関数
 */
function getPageTitle( $url ) {
    $html = file_get_contents($url); //(1)
    $html = mb_convert_encoding($html, mb_internal_encoding(), "auto" ); //(2)
    if ( preg_match( "/<title>(.*?)<\/title>/i", $html, $matches) ) { //(3)
        return $matches[1];
    } else {
        return false;
    }
}
?>

(1) file_get_contents関数で指定されたURLからHTML文字列を取得
(2) mb_convert_encoding関数で内部エンコーディングに指定している文字コードに変換
(3) preg_match関数で正規表現を使ってtitleタグを抜き出す

ってな感じ。
呼び出し方は下記のような感じで。

<?php
echo getPageTitle( "http://creazy.net/" );
?>

まとめ

今回はtitleタグだけ抜けば良かったので正規表現も単純な感じだったけど、深い階層のタグなんかにアクセスするにはDOMとかXPathとかの助けを借りた方が直感的でいいですね。

でも、シンプルな正規表現ですむ場合、DOMやXPathよりも高速になったりするので色々試してみるのもいいかもしれない。

同じカテゴリーの記事

このページの一番上に戻る
  • Facebook
  • Twitter
  • Tumblr
  • Instagram
  • miil