带有select(选项)框的RSS php阅读器

时间:2016-12-18 18:54:25

标签: php xml rss

我创建了这个PHP文件。但这只读了一个链接。如何添加其他两个?选择框仅在页面上读取一个链接... http://www.kurir.rs/rss/vesti/
http://www.blic.rs/rss/IT

<form action="index.php" method="POST">
    <select name="rss">
        <option value="http://www.kurir.rs/rss/vesti/">Kurir</option>
        <option value="http://www.blic.rs/rss/IT">Blic</option>
        <option value="http://www.b92.net/info/rss/tehnopolis.xml">B92</option>
    </select>
    <input type="submit" value="Select" />
</form>

<?php
$rss = new DOMDocument();
$rss->load('http://www.b92.net/info/rss/tehnopolis.xml');

$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>';
}

&GT;

1 个答案:

答案 0 :(得分:1)

简单的答案是,您需要使用从表单中发布的内容来加载页面。所以像这样:

$rss_url = isset($_REQUEST['rss']) ? $_REQUEST['rss'] : 'http://www.b92.net/info/rss/tehnopolis.xml';
$rss = new DOMDocument();
$rss->load( $rss_url );

我甚至在那里进行了一些验证,以检查是否设置了$_REQUEST['rss']

这是最好的方法吗?没有。您需要进一步验证您的输入,以便人们可以发布意外的内容。也可以使用POST,这可能是不必要的。 GET可能工作得很好。但是对于这个练习,它会起作用。

此外,如果您希望选项框显示所选的网址:

<form action="index.php" method="POST">
    <select name="rss">


<?php
$selection = array (
    'Kurir' => 'http://www.kurir.rs/rss/vesti/', 
    'Blic' => 'http://www.blic.rs/rss/IT', 
    'B92' => 'http://www.b92.net/info/rss/tehnopolis.xml' );

foreach ($selection as $title => $url) {
    if(! empty($_REQUEST) and isset($_REQUEST['rss']) and $_REQUEST['rss'] == $url ){
        $selected = 'selected';       
    } else {
        $selected = '';
    }
    print'<option value="'.$url.'" '.$selected.'>'.$title.'</option>';
    print "\n";
}


?>

    </select>
    <input type="submit" value="Select" />
</form>

<?php
$rss_url = isset($_REQUEST['rss']) ? $_REQUEST['rss'] : 'http://www.b92.net/info/rss/tehnopolis.xml';
print $rss_url;