테스트 사이트 - 개발 중인 베타 버전입니다

RSS 갯수를 정하고 싶습니다. 채택완료

호박둥구리 4년 전 조회 2,298

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

 

아래는 https://m.blog.naver.com/PostList.naver?blogId=talag" onclick="nclk(this, 'pst.writer', '', '');">GamZehYaavor 님 블로그에서 퍼왔는데 RSS 나오는 갯수가 정할 수가 없어 문의드립니다.

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

</p>

<p><?php

include 'dbinfo.inc';</p>

<p>

$items = array();

$i = 0;

$xmlReader = new XMLReader();</p>

<p>$xmlReader->open("<a _foo="con_link" href="<a href="http://api.flickr.com/services/feeds/photos_public.gne?id=44604249@N06&lang=ko-kr&format=rss_200" target="_blank" rel="noopener noreferrer">http://api.flickr.com/services/feeds/photos_public.gne?id=44604249@N06&lang=ko-kr&format=rss_200</a>" target="_blank">rss주소</a>", null, LIBXML_NOBLANKS);</p>

<p>$isParserActive = false;</p>

<p><font color="#ff0000"><strong>$simpleNodeTypes = array("pubDate", "media:description", "media:title");</strong></font></p>

<p>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;

      

 }  <font color="#3a32c3">else if ($name == "media:thumbnail")     {</font>

<font color="#3a32c3">  $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;  

 }</font>

} </p>

<p>    

?></p>

<p>

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
B
4년 전

</p>

<p><?php

include 'dbinfo.inc';</p>

<p>$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;  

 }

}</p>

<p>

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

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

</p>

<p><?php

include 'dbinfo.inc';</p>

<p>$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); // ★ 지정한 크기만큼 할당</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

호박둥구리
4년 전
감사드립니다. 첫번째 소스가 갯수를 정할수있습니다.
늦은밤 감사드립니다.~~~~~

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인