PHPでURL上のコンテンツを読み込む

(1/3)
PHP はファイル操作を行うこともできる。PHP が面白いのは、ローカルマシンにあるファイルと、インターネット上(URL表記)のコンテンツを同等に扱うことができる点だ。
そこで今回は、最近βテストがはじまったGoogle ニュースからリアルタイムでコンテンツを読み込み、タイトルだけ抽出して表示するプログラムを紹介する。

サンプル・プログラム

プログラムを実行する

ダウンロード(PHP4/5共用)

サンプル・プログラムの解説:時刻に関する注意事項

0001: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
0002: <html>
0003: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
0004: <title>Googleニュースより</title>
0005: <body>
0006: <p><b>Googleニュースより</b>-
0007: <?=date("n月j日G時\n") ?></p>
0008: <?php
0009: // ここからPHPプログラム =======================================================
0010: /** googlenews.php
0011:  * Google Newsからヘッダのみ取り出して表示する
0012:  * @copyright (c)studio pahoo
0013:  * @author     パパぱふぅ
0014:  * @version     2.2  2009/06/25  最新のGoogle Newsに対応
0015:  * @version     2.1  2004/10/13
0016: */
0017: 
0018: /**
0019:  * Google NewsのURL
0020:  * @global String $InputFile
0021: */
0022: $InputFile = 'http://news.google.co.jp/news?ned=tjp';
0023: 
0024: /**
0025:  * ニュースのヘッダにマッチする正規表現
0026:  * @global String $Pattern
0027: */
0028: $Pattern = "/(<h2 class=\"title\"><a.*>)(.*)(<\/a><\/h2>)/";

関数  date  は、現在のローカル時間を扱う組み込み関数だ。
引き数に与えられたアルファベットに現在日時が対応する。たとえば、n は月の数字(ゼロを付けない)、j は日の数字(ゼロを付けない)、G は 24 時制の時の数字(ゼロを付けない)である。この他、さまざまな表示書式があるので、 こちらをご覧いただきたい。ここで関数 date は HTML の中に組み込まれている。
space
PHP プログラムを含む HTML では、<?=式 ?> のように略記法を使うことで、HTML の中で PHP の式を実行することができる。単に変数や関数の値を表示するだけなら、この略記法が便利だろう。ここで 1 つ問題がある。
関数 date は、PHP が動作しているサーバのローカル時間を返すため、もし海外のサーバでこのプログラムを動かすと、サーバのある現地時間が表示されることになる。
目的からいけば Google 日本語サイトの時間を表示させるべきなので、サーバ時間から日本標準時を計算し、表示する必要がある。通常、サーバ時間を世界標準時に変換し、それから日本標準時に変換する。
PHP には関数 date と同等で、世界標準時(グリニッジ標準時)を返す関数  gmdate  がある。そこで、date の代わりに gmdate を用い、それに 9 時間加算して日本標準時を表示させるとよい。
この部分は各自挑戦してみてほしい。
space
変数 [$InputFile:bulue] は、Google News をテキストモードで表示する URL である。この URL は変更される可能性があるので、このように変数に代入しておくのがベターだ。
space
変数 $Pattern は、Google News からピックアップする部分を検索するための正規検索パターンである。詳細は後で述べる。
この項つづく
header