RSS 갯수를 정하고 싶습니다.

RSS 갯수를 정하고 싶습니다.

QA

RSS 갯수를 정하고 싶습니다.

본문

요즘 RSS 때문에 계속 헤매고있네요~~~

 

아래는 GamZehYaavor 님 블로그에서 퍼왔는데 RSS 나오는 갯수가 정할 수가 없어 문의드립니다.

----------------------------------------------------------------------------------


<?php
include 'dbinfo.inc';

$items = array();
$i = 0;
$xmlReader = new XMLReader();
$xmlReader->open("rss주소", null, LIBXML_NOBLANKS);
$isParserActive = false;
$simpleNodeTypes = array("pubDate", "media:description", "media:title");
while ($xmlReader->read()) {
 
    $nodeType = $xmlReader->nodeType;
 
 if ($nodeType != XMLReader::ELEMENT && $nodeType != XMLReader::END_ELEMENT) {       
  continue;    
 }    
 else if ($xmlReader->name == "item")    
 {        
  if (($nodeType == XMLReader::END_ELEMENT) && $isParserActive){
    $i++;        
  }
          
  $isParserActive = ($nodeType != XMLReader::END_ELEMENT);   
  
 }     
 if (!$isParserActive || $nodeType == XMLReader::END_ELEMENT){        
   continue;    
 }     
  
 $name = $xmlReader->name;     
 if (in_array ($name, $simpleNodeTypes))    
 {         // Skip to the text node        
  $xmlReader->read ();
  $value = $xmlReader->value;
  $items[$i][$name] = $value;
      
 }  else if ($name == "media:thumbnail")     {
  $items[$i]['thumbnail_url'] = $xmlReader->getAttribute("url");
                  
 } else if ($name == "media:content")     {
          
  $items[$i]['content_url']  =    $xmlReader->getAttribute("url");        
  $items[$i]['type'] = $xmlReader->getAttribute("type");
         
 } else if ($name == "media:category")     {        
  $xmlReader->read (); 
  $items[$i]['tag'] = $xmlReader->value;  
 }
} 
    
?>

 

이 질문에 댓글 쓰기 :

답변 1


<?php
include 'dbinfo.inc';
$items = array();
$i = 0;
$limit = 10; // ★ 제한
$xmlReader = new XMLReader();
$xmlReader->open("rss주소", null, LIBXML_NOBLANKS);
$isParserActive = false;
$simpleNodeTypes = array("pubDate", "media:description", "media:title");
while ($xmlReader->read()) {
    if ( $i>=$limit ) break; // ★ 제한 벗어남
    $nodeType = $xmlReader->nodeType;
 
 if ($nodeType != XMLReader::ELEMENT && $nodeType != XMLReader::END_ELEMENT) {       
  continue;    
 }    
 else if ($xmlReader->name == "item")    
 {        
  if (($nodeType == XMLReader::END_ELEMENT) && $isParserActive){
    $i++;        
  }
          
  $isParserActive = ($nodeType != XMLReader::END_ELEMENT);   
 
 }     
 if (!$isParserActive || $nodeType == XMLReader::END_ELEMENT){        
   continue;    
 }     
 
 $name = $xmlReader->name;     
 if (in_array ($name, $simpleNodeTypes))    
 {         // Skip to the text node        
  $xmlReader->read ();
  $value = $xmlReader->value;
  $items[$i][$name] = $value;
      
 }  else if ($name == "media:thumbnail")     {
  $items[$i]['thumbnail_url'] = $xmlReader->getAttribute("url");
                  
 } else if ($name == "media:content")     {
          
  $items[$i]['content_url']  =    $xmlReader->getAttribute("url");        
  $items[$i]['type'] = $xmlReader->getAttribute("type");
         
 } else if ($name == "media:category")     {        
  $xmlReader->read ();
  $items[$i]['tag'] = $xmlReader->value;  
 }
}

반복문 끝나고 한 줄 추가해서 원하는 크기만큼 구하는 방법도 있습니다.

다만, 위의 조건 만족 시 반복문을 벗어나는 방법보다 효율이 떨어집니다.


<?php
include 'dbinfo.inc';
$items = array();
$i = 0;
$xmlReader = new XMLReader();
$xmlReader->open("rss주소", null, LIBXML_NOBLANKS);
$isParserActive = false;
$simpleNodeTypes = array("pubDate", "media:description", "media:title");
while ($xmlReader->read()) {
    $nodeType = $xmlReader->nodeType;
 
 if ($nodeType != XMLReader::ELEMENT && $nodeType != XMLReader::END_ELEMENT) {       
  continue;    
 }    
 else if ($xmlReader->name == "item")    
 {        
  if (($nodeType == XMLReader::END_ELEMENT) && $isParserActive){
    $i++;        
  }
          
  $isParserActive = ($nodeType != XMLReader::END_ELEMENT);   
 
 }     
 if (!$isParserActive || $nodeType == XMLReader::END_ELEMENT){        
   continue;    
 }     
 
 $name = $xmlReader->name;     
 if (in_array ($name, $simpleNodeTypes))    
 {         // Skip to the text node        
  $xmlReader->read ();
  $value = $xmlReader->value;
  $items[$i][$name] = $value;
      
 }  else if ($name == "media:thumbnail")     {
  $items[$i]['thumbnail_url'] = $xmlReader->getAttribute("url");
                  
 } else if ($name == "media:content")     {
          
  $items[$i]['content_url']  =    $xmlReader->getAttribute("url");        
  $items[$i]['type'] = $xmlReader->getAttribute("type");
         
 } else if ($name == "media:category")     {        
  $xmlReader->read ();
  $items[$i]['tag'] = $xmlReader->value;  
 }
}
$items = array_slice($items, 0, 10); // ★ 지정한 크기만큼 할당
답변을 작성하시기 전에 로그인 해주세요.
전체 11
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT