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

[2008年5月15日 23:20]

このエントリーをはてなブックマークに追加

いきなり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よりも高速になったりするので色々試してみるのもいいかもしれない。

ソーシャルコメント

Twitterコメント

ツイートでコメントする

はてブコメント

はてブでコメントする
被リンク/トラックバック
リンク用HTMLタグ:
(※あなたのブログからこの記事にリンクすれば、ブログ検索エンジンが自動的にクロールしてここに表示されます。)
PR
Profile

ヤガー ヤガー (yager)
写真好きなWEB系エンジニア
»