<?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);
}
?>
插件77:获取Yahoo!股票新闻
最新推荐文章于 2024-09-25 09:11:34 发布