插件77:获取Yahoo!股票新闻

来源:互联网 发布:大数据人才需求分析 编辑:程序博客网 时间:2024/06/05 15:16
<?php // Plug-in 77: Get Yahoo! Stock News/* * 获取Yahoo!股票新闻 * 插件说明: * 插件接受一个股票代码,如AAPL或MSFT,返回该股票的相关新闻和股份信息。 * 若操作成功,则返回一个三元素数组。 * 第一个元素是新闻故事的个数。 * 第二个元素是一个子数组,保存两个URL地址, * 第一个是该股票当天的股价小图,第二个是它的大图。 * 而第三个元素是一个子数组,包含一下详细信息: *     标题 *     发布网站 *     日期 *     新闻摘要和详细报道 *     新闻内容的源URL地址 * 若操作失败,则返回一个值为FALSE的数组。 * 本插件需要以下参数: * $stock 一个有效地股票代码,如YHOO或JPM. */// This is an executable example with additional code supplied// To obtain just the plug-ins please click on the Download link$stock   = "AAPL";$results = PIPHP_GetYahooStockNews($stock);echo "<font face='Arial' size='2'>Fetching recent news " .     "stories for: <b>$stock</b>:<br /><br />";if (!$results[0]) echo "No stories found for $stock.";else{   echo "<a href='http://finance.yahoo.com/q?s=$stock'>".        "<img src='" . $results[1][0] . "' border='1' />" .        '</a><br /><br />';   foreach($results[2] as $result)      echo "<a href='$result[4]'>$result[0]</a> " .           "($result[1], $result[2])<br />$result[3]" .           '<br /><br />';}function PIPHP_GetYahooStockNews($stock){   // Plug-in 77:  Get Yahoo! Stock News   //   // This plug-in takes a stock ticker symbol and then returns   // any recent news stories on it from finance.yahoo.com.   // Upon success it returns a three element array, the first   // of which is the number of new stories returned, the second   // is a two element array with a URL to a small (192x96) and   // a large (512x288) intraday price chart for the stock,  and   // the third element is an array in which each element   // contains a sub-array of the following five items for each   // stock: 1) The title of the news story, 2) The site it came   // from, 3) The date of the story, 4) The story summary, and   // 5) The URL of the original story. On failure a single   // element array with the value FALSE us returned. It requires   // this argument:   //   //    $stock: A stock symbol   $stock = strtoupper($stock);   $url   = 'http://finance.yahoo.com';   $check = @file_get_contents("$url/q?s=$stock");   if (stristr($check, 'Invalid Ticker Symbol') || $check == '')      return array(FALSE);   $reports = array();   $xml     = file_get_contents("$url/rss/headline?s=$stock");   $xml     = preg_replace('/<\/?summary>/', '', $xml);   $xml     = preg_replace('/<\/?image>/',   '', $xml);   $xml     = preg_replace('/<\/?guid>/',    '', $xml);   $xml     = preg_replace('/<\/?p?link>/',  '', $xml);   $xml     = str_replace('<![CDATA[',          '', $xml);   $xml     = str_replace(']]>',                '', $xml);   $xml     = str_replace('&',      '[ampersand]', $xml);   $xml     = str_replace('&',                '&', $xml);   $xml     = str_replace('[ampersand]',      '&', $xml);   $xml     = str_replace('<b>',          '<b>', $xml);   $xml     = str_replace('</b>',        '</b>', $xml);   $xml     = str_replace('<wbr>',      '<wbr>', $xml);   $sxml    = simplexml_load_string($xml);   foreach($sxml->channel->item as $item)   {      $flag  = FALSE;      $url   = $item->link;      $title = $item->title;      $temp  = explode(' (', $title);      $title = $temp[0];      $site  = str_replace(')', '', $temp[1]);      $site  = str_replace('at ', '', $site);      $desc  = $item->description;      $date  = date('M jS, g:ia',         strtotime(substr($item->pubDate, 0, 25)));      for ($j = 0 ; $j < count($reports) ; ++$j)      {         similar_text(strtolower($reports[$j][0]),            strtolower($title), $percent);         if ($percent > 70)         {            $flag = TRUE;            break;         }      }      if (!$flag && !strstr($title, '[$]') && strlen($desc))         $reports[] = array($title, $site, $date, $desc, $url);   }   $url1 = "http://ichart.finance.yahoo.com/t?s=$stock";   $url2 = "http://ichart.finance.yahoo.com/b?s=$stock";   return array(count($reports), array($url1, $url2), $reports);}?>

原创粉丝点击