Exemplo n.º 1
0
 /**
  * RSSフィードのURLを指定して内容をparseする
  *
  * @param $rss_url RSSフィードのURL(http)
  * @return RSS取得時=RSS情報(連想配列) / RSS取得エラー時=false
  */
 static function get_external_rss_row_array($rss_url)
 {
     // XML_RSS, XML_Parser
     require_once 'XML/RSS.php';
     // RSS情報
     $rss_row_array = array();
     $line_array = file($rss_url);
     if ($line_array == false) {
         return false;
     }
     $rss_data = implode(NULL, $line_array);
     $rss_encoding = mb_detect_encoding($rss_data, 'auto');
     // XML_RSS
     $rss = new XML_RSS();
     $rss->setInputString($rss_data);
     $rss->parse();
     // Channel Info
     $channel_info = $rss->getchannelInfo();
     $rss_row_array['channel_info'] = array();
     $rss_row_array['channel_info']['rss_channel_title'] = mb_convert_encoding($channel_info['title'], mb_internal_encoding(), $rss_encoding);
     $rss_row_array['channel_info']['rss_url'] = $rss_url;
     // Items
     $rss_row_array['items'] = array();
     foreach ($rss->getItems() as $item) {
         $item_row = array();
         $item_row['rss_item_title'] = mb_convert_encoding($item['title'], mb_internal_encoding(), $rss_encoding);
         $item_row['rss_item_content'] = strip_tags(mb_convert_encoding($item['content:encoded'], mb_internal_encoding(), $rss_encoding));
         if (trim($item_row['rss_item_content']) == '') {
             // <content:encoded>が無い場合は<description>を取得
             $item_row['rss_item_content'] = strip_tags(mb_convert_encoding($item['description'], mb_internal_encoding(), $rss_encoding));
         }
         $item_row['rss_item_date'] = mb_convert_encoding($item['dc:date'], mb_internal_encoding(), $rss_encoding);
         $item_row['rss_item_link'] = mb_convert_encoding($item['link'], mb_internal_encoding(), $rss_encoding);
         array_push($rss_row_array['items'], $item_row);
     }
     return $rss_row_array;
 }