如何向我的php rss解析器添加偏移量和限制?

如何向我的php rss解析器添加偏移量和限制?,php,Php,如何向以对象形式返回结果的PHP rss解析器添加偏移量和限制?下面是我目前掌握的内容。它没有任何偏移或限制,如何处理 class Rss { /* *@access public *@params url,int ''=default,int ''=default *@usage input url,offset and limit, *@returns content based onf the offset/limit input

如何向以对象形式返回结果的PHP rss解析器添加偏移量和限制?下面是我目前掌握的内容。它没有任何偏移或限制,如何处理

    class Rss
{
     /*
     *@access public
     *@params url,int ''=default,int ''=default
     *@usage input url,offset and limit,
     *@returns content based onf the offset/limit input
     */
    public function getFeed($url,$offset='',$limit=''){
        $object = array();
        $rss = simplexml_load_file($url);
      foreach($rss->channel->item as $item){
          $object[] = $item->title;
          $object[] = $item->description;
          $object[] = $item->link;
      }
     return $object;
   }
}
最简单的方法

$limit = 10; $offset = 5; 
$i=0; $taken=0;
foreach($rss->channel->item as $item){
    if ($i>=$offset && $taken<$limit){
        ++$taken;
        $object[] = $item->title;
        $object[] = $item->description;
        $object[] = $item->link;
    }
    //little optimization here
    if ($taken == $limit)
        break;
    ++$i;
}
$limit=10$偏移量=5;
$i=0$取=0;
foreach($rss->channel->item as$item){
如果($i>=$offset&&$takentile;
$object[]=$item->description;
$object[]=$item->link;
}
//这里有点优化
如果($take==$limit)
打破
++$i;
}
当然,您可以将
$limit
$offset
存储为对象属性,也可以从别处获取它们。

最简单的方法

$limit = 10; $offset = 5; 
$i=0; $taken=0;
foreach($rss->channel->item as $item){
    if ($i>=$offset && $taken<$limit){
        ++$taken;
        $object[] = $item->title;
        $object[] = $item->description;
        $object[] = $item->link;
    }
    //little optimization here
    if ($taken == $limit)
        break;
    ++$i;
}
$limit=10;$offset=5;
$i=0;$take=0;
foreach($rss->channel->item as$item){
如果($i>=$offset&&$takentile;
$object[]=$item->description;
$object[]=$item->link;
}
//这里有点优化
如果($take==$limit)
打破
++$i;
}

当然,您可以将
$limit
$offset
存储为对象属性,或者从其他地方获取它们。

单个计数器如何?根据需要设置偏移/限制

public function getFeed($url,$offset='',$limit=''){
    $object = array();
    $rss = simplexml_load_file($url);
    $offset = 3; $limit = 8; $counter = 0;
  foreach($rss->channel->item as $item){
      $counter++;
      if ($counter > $offset && $counter < $limit) {
        $object[] = $item->title;
        $object[] = $item->description;
        $object[] = $item->link;
      }
  }
 return $object;
公共函数getFeed($url,$offset='',$limit=''){
$object=array();
$rss=simplexml\u load\u文件($url);
$offset=3;$limit=8;$counter=0;
foreach($rss->channel->item as$item){
$counter++;
如果($counter>$offset&&$counter<$limit){
$object[]=$item->title;
$object[]=$item->description;
$object[]=$item->link;
}
}
返回$object;

}

单个计数器怎么样?根据需要设置偏移/限制

public function getFeed($url,$offset='',$limit=''){
    $object = array();
    $rss = simplexml_load_file($url);
    $offset = 3; $limit = 8; $counter = 0;
  foreach($rss->channel->item as $item){
      $counter++;
      if ($counter > $offset && $counter < $limit) {
        $object[] = $item->title;
        $object[] = $item->description;
        $object[] = $item->link;
      }
  }
 return $object;
公共函数getFeed($url,$offset='',$limit=''){
$object=array();
$rss=simplexml\u load\u文件($url);
$offset=3;$limit=8;$counter=0;
foreach($rss->channel->item as$item){
$counter++;
如果($counter>$offset&&$counter<$limit){
$object[]=$item->title;
$object[]=$item->description;
$object[]=$item->link;
}
}
返回$object;
}

您可以使用。这样,您就不必遍历所有项目来计算物品

  public function getFeed($url, $offset = 1, $limit = -1){
    $object = array();
    $rss = simplexml_load_file($url);

    $limitCriteria = '';
    if ($limit > 0) {
      $limitCriteria = 'and position() <= ' . ((int)$offset + (int)$limit + 1);
    }

    foreach($rss->xpath(sprintf('//item[position() >= %s %s]', (int)$offset, $limitCriteria)) as $item){
      $object[] = $item->title;
      $object[] = $item->description;
      $object[] = $item->link;
    }

    return $object;
  }
公共函数getFeed($url,$offset=1,$limit=-1){
$object=array();
$rss=simplexml\u load\u文件($url);
$limitCriteria='';
如果($limit>0){
$limitCriteria='和position()=%s%s],(int)$offset,$limitCriteria))作为$item){
$object[]=$item->title;
$object[]=$item->description;
$object[]=$item->link;
}
返回$object;
}
您可以使用。这样,您就不必遍历所有项目来计算物品

  public function getFeed($url, $offset = 1, $limit = -1){
    $object = array();
    $rss = simplexml_load_file($url);

    $limitCriteria = '';
    if ($limit > 0) {
      $limitCriteria = 'and position() <= ' . ((int)$offset + (int)$limit + 1);
    }

    foreach($rss->xpath(sprintf('//item[position() >= %s %s]', (int)$offset, $limitCriteria)) as $item){
      $object[] = $item->title;
      $object[] = $item->description;
      $object[] = $item->link;
    }

    return $object;
  }
公共函数getFeed($url,$offset=1,$limit=-1){
$object=array();
$rss=simplexml\u load\u文件($url);
$limitCriteria='';
如果($limit>0){
$limitCriteria='和position()=%s%s],(int)$offset,$limitCriteria))作为$item){
$object[]=$item->title;
$object[]=$item->description;
$object[]=$item->link;
}
返回$object;
}