使用php抓取rss feed并更改rss字符串中的值

时间:2014-02-13 02:41:40

标签: php rss yahoo-finance

好的我有一个网站,我使用此代码来获取每个搜索股票的股票报价。 <?php echo $_GET['quote'];?>我要做的是使用以下代码显示RSS新闻数据:

<?php
    $rss = new DOMDocument();
    $rss->load('http://feeds.finance.yahoo.com/rss/2.0/headline?s=GOOG&region=US&lang=en-USsto');
    $feed = array();
    foreach ($rss->getElementsByTagName('item') as $node) {
    $item = array (
    'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
    'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
    'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
    'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
    );
    array_push($feed, $item);
    }
    $limit = 5;
    for($x=0;$x<$limit;$x++) {
    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
    $link = $feed[$x]['link'];
    $description = $feed[$x]['desc'];
    $date = date('l F d, Y', strtotime($feed[$x]['date']));
    echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />';
    echo '<small><em>Posted on '.$date.'</em></small></p>';
    echo '<p>'.$description.'</p>';
    }
    ?>

你看到“GOOG”部分了吗?这就是我试图用引号捕获代码<?php echo $_GET['quote'];?>动态更改它,它会抛出错误!有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

如果您的GET值包含合法的股票代码,那么这将有效。

$rss->load('http://feeds.finance.yahoo.com/rss/2.0/headline?s='.$_GET['quote'].'&region=US&lang=en-USsto');

您已经处于php上下文中,因此不是连接字符串的方法

然而,由于没有检查$ _GET [&#39; quote&#39;]是否已设置或具有任何值,因此这不是一种强有力的处理方式,如果不是,则需要确定要获取的内容设置

<强>更新

注意问题中给出的原始网址无效

http://feeds.finance.yahoo.com/rss/2.0/headline?s=GOOG&region=US&lang=en-USsto

不起作用,但

http://feeds.finance.yahoo.com/rss/2.0/headline?s=GOOG&region=US&lang=en-US

确实

所以请将您的代码更新为

$rss->load('http://feeds.finance.yahoo.com/rss/2.0/headline?s='.$_GET['quote'].'&region=US&lang=en-US');