simplexml_load_file从WP提要中重复生成相同的帖子

时间:2013-01-07 05:12:26

标签: php rss simplexml

我正在使用simplexml_load_file从wordpress博客获取RSS Feed。这是我的代码

$rssfile = simplexml_load_file( "http://blog.sufuraamathi.com/?feed=rss2" );
$items = $rssfile->channel->item ;

foreach( $items as $item ) {
  $article = array();
  $article['title'] = $item->title;
  $article['link'] = $item->link; 
  $article['category'] = $item->category;
}

foreach( $items as $item ) { ?>
 <?php if($article['category']=="Uncategorized") { ?>

    <div><?php echo $article['title'];?></div>
<?php
} } ;

?>

问题:它重复输出相同的帖子x次,其中x是帖子的总数。目前,Uncategorized类别中只有两个帖子,其他类别中只有三个帖子。但代码回应如下:

<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>

1 个答案:

答案 0 :(得分:0)

您的问题出在发布代码的第五行。您必须取出第一个foreach循环的数组定义:

$rssfile = simplexml_load_file( "http://blog.sufuraamathi.com/?feed=rss2" );
$items = $rssfile->channel->item ;

$article = array();  // <- put it here
foreach( $items as $item ) {
  $article['title'] = $item->title;
  $article['link'] = $item->link; 
  $article['category'] = $item->category;
}
...

因为您当前的解决方案会重置每行的$article数组。但是为什么不在一个foreach循环中循环所有内容?如果您没有将$article用于其他目的,我没有看到使用$item数据分配给数组。代码可以简化:

$rssfile = simplexml_load_file( "http://blog.sufuraamathi.com/?feed=rss2" );
$items = $rssfile->channel->item ;

foreach( $items as $item ) { ?>
 <?php if($item->category=="Uncategorized") { ?>
    <div><?php echo $item->title;?></div>
<?php
} } ?>