PHP/PHP and AJAX

PHP AJAX RSS Reader 구문

진격의 파파 2013. 7. 24. 11:30
반응형

 

 

이번장에서는 PHP AJAX RSS Reader 구문에 대해서 알아볼텐데요. 보통 뉴스기사, 블로그 등의 내용을 가져와 다른곳에 노출시키고 싶을때 많이들 사용합니다.  정말 재미있고 유용한 구문이며, 아래 나오는 예제를 잘 살펴보길 바랍니다.

 

RSS(Rich Site Summary) 의 사전적 의미  :  포털사이트나 블로그와 같이 컨텐츠 업데이트가 자주 일어나는 웹사이트에서, 업데이트 된 정보를 자동적으로 쉽게 사용자들에게 제공하기 위한 서비스. 사이트가 제공하는 RSS 주소를 소정의 RSS Reader 프로그램에 등록하기만 하면, 업데이트된 정보를 찾기 위해 매번 로그인하거나 방문할 필요 없이 자동적으로 이들을 확인하고 이용할 수 있는 편의성이 있습니다. RSS를 운영자와 사용자의 입장에서 보았을 때, 서비스 운영자는 신규 또는 추천 정보를 고객에게 보다 손쉽게 제공할 수 있으며 사용자는 관심있는 정보를 쉽고 빠르게 조회할 수 있습니다. 

 

 

예제구문

------ rss.html ------

<html>
 <head>
 <script>
 function showRSS(str)
 {
 if (str.length==0)
   {
   document.getElementById("rssOutput").innerHTML="";
   return;
   }
 if (window.XMLHttpRequest)
   {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {// code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     document.getElementById("rssOutput").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET","rss.php?q="+str,true);
 xmlhttp.send();
 }
 </script>
 </head>
 <body>

 <form>
 <select onchange="showRSS(this.value)">
 <option value="">RSS-선택하세요:</option>
 <option value="park">Park's blog</option>
 <option value="hani">한겨례 News</option>
 <option value="gyung">경향 News</option>
 <option value="jung">중앙일보 News</option>
 <option value="Google">Google News</option>
 </select>
 </form>
 <br>
 <div id="rssOutput">RSS의 내용이 이곳에 나옵니다.</div>
 </body>
 </html>

//  select  구문에서 블로그 또는 언론사를 선택하면 showRss() 함수를 타며, value 값이 rss.php 로 전달되게 됩니다. 그래서 선택한 rss의 내용이 화면에 나타나게 됩니다.

 

------- rss.php -------

<?php
 //get the q parameter from URL
 $q=$_GET["q"];

 //$q 변수값을 비교하여 해당하는 rss 값을 보여줌
 if($q=="Google") {
  $xml=("
http://news.google.com/news?ned=us&topic=h&output=rss");
 } elseif($q=="hani") {
  $xml=("
http://www.hani.co.kr/rss/");
 } elseif($q=="gyung") {
  $xml=("
http://www.khan.co.kr/rss/rssdata/total_news.xml");
 } elseif($q=="jung") {
  $xml=("
http://rss.joinsmsn.com/joins_news_list.xml");
 } elseif($q=="park") {
  $xml=("
http://blog.rss.naver.com/makand123.xml");
 }

 $xmlDoc = new DOMDocument();
 $xmlDoc->load($xml);

 //"<channel>"로 부터 값을 가져옴
 $channel=$xmlDoc->getElementsByTagName('channel')->item(0);
 $channel_title = $channel->getElementsByTagName('title')
 ->item(0)->childNodes->item(0)->nodeValue;
 $channel_link = $channel->getElementsByTagName('link')
 ->item(0)->childNodes->item(0)->nodeValue;
 $channel_desc = $channel->getElementsByTagName('description')
 ->item(0)->childNodes->item(0)->nodeValue;

 //output elements from "<channel>"
 echo("<p><a href='" . $channel_link
   . "'>" . $channel_title . "</a>");
 echo("<br>");
 echo($channel_desc . "</p>");

 //"<item>" 요소를 가져와 출력함
 $x=$xmlDoc->getElementsByTagName('item');
 for ($i=0; $i<=2; $i++)
   {
   $item_title=$x->item($i)->getElementsByTagName('title')
   ->item(0)->childNodes->item(0)->nodeValue;
   $item_link=$x->item($i)->getElementsByTagName('link')
   ->item(0)->childNodes->item(0)->nodeValue;
   $item_desc=$x->item($i)->getElementsByTagName('description')
   ->item(0)->childNodes->item(0)->nodeValue;

   echo ("<p><a href='" . $item_link
   . "'>" . $item_title . "</a>");
   echo ("<br>");
   echo ($item_desc . "</p>");
   }
 ?>

// 위 두개의 구문을 이용하여 블로그 및 뉴스기사의 내용을 RSS로 가져올수 있게됩니다. 소스를 복사해서 테스트 해보거나 직접 코딩하면서 테스트 해보시기 바랍니다~

 

 

 // 위 그림은 제 블로그 rss를 가져온것이고 한겨례, 경향, 중앙 등을 선택하면 그에 해당하는 기사를 가져오게 됩니다.

반응형