RSS php reader 带 select(选项)框
RSS php reader with select (option) box
我创建了这个 PHP 文件。但是这个只读了一个link。我怎样才能添加其他两个?选择框只显示一页 link ... 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(' & ', ' & ', $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>';
}
?>
答案很简单,您需要使用从表单中 post 编辑的内容来加载页面。所以像这样:
$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 一些意想不到的事情。此外,使用 POST 可能是不必要的。 GET 可能工作得很好。但是对于这个练习,它会起作用。
此外,如果您希望选项框显示所选 url:
<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;
我创建了这个 PHP 文件。但是这个只读了一个link。我怎样才能添加其他两个?选择框只显示一页 link ... 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(' & ', ' & ', $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>';
}
?>
答案很简单,您需要使用从表单中 post 编辑的内容来加载页面。所以像这样:
$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 一些意想不到的事情。此外,使用 POST 可能是不必要的。 GET 可能工作得很好。但是对于这个练习,它会起作用。
此外,如果您希望选项框显示所选 url:
<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;