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 포인트
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년 전
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
늦은밤 감사드립니다.~~~~~