PHPでRSSフィードを取得、JSONで出力してみた
ニコニコ動画に関連したことで何か面白いこと出来るかな?
PHPでのJSON出力をやってみた。
PHPでRSSフィードを取得してみた
今回は上記2つの記事でやったことを組み合わせてゴニョゴニョしてみました。
<?php // URL設定 $feed = simplexml_load_file("http://www.nicovideo.jp/ranking/fav/daily/vocaloid?rss=2.0&lang=ja-jp"); // 連想配列を作成 $arr = array(); // フィードアイテムの数を取得 $entry_count = count($feed->channel->item); // 各要素をループで繰り返し取得して、連想配列に格納する for ($i = 0; $i < $entry_count; $i++){ $arr[$i]['feed-title'] = (string)$feed->channel->title; $arr[$i]['title'] = (string)$feed->channel->item->$i->title; $arr[$i]['link'] = (string)$feed->channel->item->$i->link; $arr[$i]['guid'] = (string)$feed->channel->item->$i->guid; $arr[$i]['pubDate'] = (string)$feed->channel->item->$i->pubDate; $string = (string)$feed->channel->item->$i->description; preg_match( '/src=\"(.[^\"]*)\"/', $string, $match); $arr[$i]['thumbnail'] = $match[1]; preg_match ( "/<p class=\"nico-description\">(.*?)<\/p>/i", $string, $match); $arr[$i]['nico-description'] = $match[1]; preg_match ( "/<strong class=\"nico-info-number\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-number'] = $match[1]; preg_match ( "/<strong class=\"nico-info-length\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-length'] = $match[1]; preg_match ( "/<strong class=\"nico-info-date\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-date'] = $match[1]; preg_match ( "/<strong class=\"nico-info-total-view\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-total-view'] = $match[1]; preg_match ( "/<strong class=\"nico-info-total-res\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-total-res'] = $match[1]; preg_match ( "/<strong class=\"nico-info-total-mylist\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-total-mylist'] = $match[1]; preg_match ( "/<strong class=\"nico-info-daily-view\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-daily-view'] = $match[1]; preg_match ( "/<strong class=\"nico-info-daily-res\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-daily-res'] = $match[1]; preg_match ( "/<strong class=\"nico-info-daily-mylist\">(.*?)<\/strong>/i", $string, $match); $arr[$i]['nico-info-daily-mylist'] = $match[1]; } // JSON形式にエンコード $json = json_encode($arr,JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); //$json = json_encode($arr); // エンコード/デコード処理中に発生したエラーを確認 switch (json_last_error()) { case JSON_ERROR_NONE: //echo ' - No errors'; header('Content-type: text/javascript'); echo $json; break; case JSON_ERROR_DEPTH: echo ' - Maximum stack depth exceeded'; break; case JSON_ERROR_STATE_MISMATCH: echo ' - Underflow or the modes mismatch'; break; case JSON_ERROR_CTRL_CHAR: echo ' - Unexpected control character found'; break; case JSON_ERROR_SYNTAX: echo ' - Syntax error, malformed JSON'; break; case JSON_ERROR_UTF8: echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; break; default: echo ' - Unknown error'; break; } ?>
以上でござる。