我想拆分xml RSS feed。
这是我使用的。但它不起作用。似乎unset
工作不正常。
<?php
header("Content-Type: application/rss+xml; charset=UTF-8");
$offset = 0;
$limit = 4;
$url = 'https://sociallysorted.com.au/blog/feed/';
$feed = simplexml_load_file($url);
$feedCount = count($feed->channel->item);
for ( $i = 0; $i < $feedCount; $i++ ) {
if($i < $offset || $i > $limit){
unset ($feed->channel->item[$i]);
}
}
echo $feed->asXML();
?>
总Feed数量为10我只需要前5个Feed。有时候最后5次喂食。但是使用这个代码,它将为我提供7个feed,这些是随机的。不是第一个或最后一个。
如果我更改了代码,就会显示它运行正常。
for ( $i = 0; $i < $feedCount; $i++ ) {
if($i < $offset || $i > $limit){
echo "DELETE $i <br/>";
unset ($feed->channel->item[$i]);
}else{
echo "LOOP $i <br/>";
}
}
输出
LOOP 0
LOOP 1
LOOP 2
LOOP 3
LOOP 4
DELETE 5
DELETE 6
DELETE 7
DELETE 8
DELETE 9
它看起来工作正常,但为什么它会显示7个Feed?
答案 0 :(得分:0)
替换:
unset($feed->channel->item[$i]);
使用:
$feed->channel->item[$i] = null;
答案 1 :(得分:0)
看看这个。
$feed = simplexml_load_file($url);
$removed = 0;
$itemCount = count($feed->channel->item);
for ( $i = 0; $i < $itemCount ; $i++ ) {
if($i < $offset || $i > $limit){
unset ($feed->channel->item[$i - $removed]);
$removed++;
}
}
echo $feed->asXML();