
- 2012 年(平成 24 年)1 月、RSS を使った取得方法に変更した。
- 2018 年(平成 30 年)5 月、Google ニュースの仕様変更に対応し、Magpie RSS の利用を廃止した。
サンプル・プログラムの実行例

サンプル・プログラム
解説:検索URLの生成
0202: /**
0203: * 無効な証明書サイトからXML取得できるようにする
0204: * @param なし
0205: * @return なし
0206: */
0207: function unknown_certificate() {
0208: $context = array(
0209: 'ssl' => array(
0210: 'verify_peer' => FALSE,
0211: 'verify_peer_name' => FALSE,
0212: )
0213: );
0214: libxml_set_streams_context(stream_context_create($context));
0215: }
0216:
0217: /**
0218: * Googleニュース検索URLを生成する(RSS2.0出力)
0219: * @param string $query 検索キー(INTERNAL_ENCODING)
0220: * @return string 検索URL
0221: */
0222: function getURL_GoogleNewsSearch($query) {
0223: $query = urlencode($query);
0224: $url = "https://news.google.com/news/rss/headlines/section/q/{$query}/?ned=jp&hl=ja&gl=JP";
0225: return $url;
0226: }
検索キー(変数 $query)を指定して作成する。この URL で受け取れる出力形式は RSS2.0 となっている。
2018 年(平成 30 年)1 月頃に URL と仕様が変わり、件数の指定はできなくなっている。

また、プロトコルは https になったが、SSL証明書の認証が不完全であるようなので、ユーザー関数 unknown_certificate を用意し、無効な証明書サイトからでも RSS を取得できるようにしている。
解説:記事の解析
0241: /**
0242: * Googleニュースを検索し、解析結果を配列に格納
0243: * @param object $rss MagpieRSSの出力
0244: * @param array $items 解析結果を格納する配列
0245: * @return int 解析結果
0246: */
0247: function analyseGoogleNews($rss, &$items) {
0248: $pat = '/<font\scolor\=\"#6f6f6f\">([^<]+)<\/font>/uims';
0249: $key = 0;
0250:
0251: foreach ($rss->channel->item as $val) {
0252: $items[$key]['title'] = $val->title; //記事タイトル
0253: $items[$key]['url'] = $val->link; //記事URL
0254: $items[$key]['ts'] = strtotime($val->pubDate); //UNIX時間
0255: $items[$key]['media'] = //メディア
0256: (preg_match($pat, $val->description, $arr) > 0) ? $arr[1] : '';
0257: $key++;
0258: }
0259:
0260: return $key;
0261: }

pubDate タグに記述されている日時を UNIX TIME に変換しておく。あとで並べ替えがしやすくできるようにするためである。
また、description タグ中にメディア名称が組み込まれているので、関数 preg_match を使って分離する。
解説:その他

Google ニュースの表示フォーマットは時々変更される。
もしサンプル・プログラムが正常に動作しないようだったら、各自において手直ししていただきたい。