サンプル・プログラムの実行例
サンプル・プログラム
解説:検索URLの生成
212: /**
213: * 無効な証明書サイトからXML取得できるようにする
214: * @param なし
215: * @return なし
216: */
217: function unknown_certificate() {
218: $context = array(
219: 'ssl' => array(
220: 'verify_peer' => FALSE,
221: 'verify_peer_name' => FALSE,
222: )
223: );
224: libxml_set_streams_context(stream_context_create($context));
225: }
227: /**
228: * Googleニュース検索URLを生成する(RSS2.0出力)
229: * @param string $query 検索キー(INTERNAL_ENCODING)
230: * @return string 検索URL
231: */
232: function getURL_GoogleNewsSearch($query) {
233: $query = urlencode($query);
234: $url = "https://news.google.com/news/rss/headlines/section/q/{$query}/?ned=jp&hl=ja&gl=JP";
235: return $url;
236: }
検索キー(変数 $query)を指定して作成する。このURLで受け取れる出力形式はRSS2.0となっている。
2018年(平成30年)1月頃にURLと仕様が変わり、件数の指定はできなくなっている。
また、プロトコルは https になったが、SSL証明書の認証が不完全であるようなので、ユーザー関数 unknown_certificate を用意し、無効な証明書サイトからでもRSSを取得できるようにしている。
解説:記事の解析
251: /**
252: * Googleニュースを検索し、解析結果を配列に格納
253: * @param object $rss MagpieRSSの出力
254: * @param array $items 解析結果を格納する配列
255: * @return int 解析結果
256: */
257: function analyseGoogleNews($rss, &$items) {
258: $pat = '/<font\scolor\=\"#6f6f6f\">([^<]+)<\/font>/uims';
259: $key = 0;
260:
261: foreach ($rss->channel->item as $val) {
262: $items[$key]['title'] = $val->title; //記事タイトル
263: $items[$key]['url'] = $val->link; //記事URL
264: $items[$key]['ts'] = strtotime($val->pubDate); //UNIX時間
265: $items[$key]['media'] = //メディア
266: (preg_match($pat, $val->description, $arr) > 0) ? $arr[1] : '';
267: $key++;
268: }
269:
270: return $key;
271: }
pubDate タグに記述されている日時をUNIX TIMEに変換しておく。あとで並べ替えがしやすくできるようにするためである。
また、descriptionタグ中にメディア名称が組み込まれているので、関数 preg_match を使って分離する。
解説:その他
Googleニュースの表示フォーマットは時々変更される。
もしサンプル・プログラムが正常に動作しないようだったら、各自において手直ししていただきたい。
(2021年1月16日)PHP8に対応した。