サンプル・プログラムの実行例

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

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

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

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