제목 RSS 강좌 - PEAR를 이용한 RSS 기능 구현
작성자 손상모 작성일 2004.11.20 15:39:55
첨부파일 pearreader.zip(0.93KB)


RSS강좌 목표가 RSS Reader(Aggregator) 구현보다는 RSS에 대한 이해이다 보니 너무 깊게 설명하여, 단순하게 RSS 기능 구현이 목적인 분들은 좀 복잡하다 생각하실 수 있을 것 같아, 이번시간에는 RSS 모듈을 통하여 개발자가 쉽게 RSS를 사용하는 방법을 소개하려고 합니다.

앞의 강좌에서 사용한 RSSReader 클래스( 꽤 쓸만함) 사용하는 것도 좋지만, PHP에는 PEAR(PHP Extension and Application Repository)라는 아주 좋은 솔루션이 있습니다. 그럼 PEAR에 대한 간략한 소개와 PEAR 중의 XML/RSS 클래스 사용방법을 알아 보도록 하겠습니다.

1. PEAR 소개
PEAR는 "PHP Extension and Application Repository" 의 약자로써 Malin Bakken에 의하여 1999.11.12에 시작하여, 현재는 다양한 클래스등을 제공하여 PHP 개발자들이 좀 더 편리하게 개발할수 있는 환경을 제공하고 있습니다.

PHP 설치시 기본적으로 PEAR가 설치지 않기에( 버전과 설치 옵션에 따라서 차이가 있슴)  여러분의 시스템에 현재 PEAR가 설치되어 있지 않을 수 있습니다. PEAR의 설치와 보다 자세한 설명은 아래의 사이트를 참고하여 주십시요.

2. XML/RSS 설치 및 메뉴얼
PEAR 클래스 중에서 XML_RSS를 설치해 보도록 하겠습니다. 사이트에서 직접 소스를 다운로드 받아서 설치하거나, 아님 아래의 예처럼 온라인상에서 바로 설치도 가능합니다. "pear" 의 사용방법은 "c:pearpear help" 로 pear 명령어들에 대한 간단한 설명을 볼수 있습니다.

  • pear list -> 서버에 설치되어 있는 목록을 보여줍니다.
  • pear remote-list -> pear.php.net 에 있는 Package 리스트를 보여줍니다.
  • pear install packagename -> Package를 설치해줍니다.
  • pear uninstall packagename -> Package를 설치해줍니다.
  • pear remote-info packagname -> pear.php.net 에 있는 Package 정보를 보여 줍니다.
C:php>pear install XML_RSS
downloading XML_RSS-0.9.2.tgz ...
Starting to download XML_RSS-0.9.2.tgz (3,515 bytes)
....done: 3,515 bytes
requires package `XML_Tree'
XML_RSS: Dependencies failed

C:php>pear install XML_Tree
downloading XML_Tree-1.1.tgz ...
Starting to download XML_Tree-1.1.tgz (4,826 bytes)
.....done: 4,826 bytes
install ok: XML_Tree 1.1

C:php>pear install XML_RSS
downloading XML_RSS-0.9.2.tgz ...
Starting to download XML_RSS-0.9.2.tgz (3,515 bytes)
....done: 3,515 bytes
install ok: XML_RSS 0.9.2


C:phpPEAR>cd XML
C:phpPEARXML>dir
C 드라이브의 볼륨: 로컬 디스크
볼륨 일련 번호: 58B7-06FB

C:phpPEARXML 디렉터리

2004-11-20  02:07p      <DIR>          .
2004-11-20  02:07p      <DIR>          ..
2004-11-20  02:07p      <DIR>          Parser
2004-11-20  02:07p              18,932 Parser.php
2004-10-22  04:14p      <DIR>          RPC
2004-10-22  04:14p              34,992 RPC.php
2004-11-20  02:02p               8,718 RSS.php
2004-11-20  02:02p      <DIR>          Tree
2004-11-20  02:02p              10,028 Tree.php

4개 파일          72,670 바이트
5 디렉터리   9,076,826,112 바이트 남음

PEAR 메뉴얼 : http://pear.php.net/manual/en/package.xml.xml-rss.php

3. RSS Reader 기능 구현
XML/RSS Package 사용에 대한 간단한 예와 "RSS강좌 - RSSReader Class 제작 및 Reader 만들기"에서 구현한 간단한 RSS Reader를 XML_RSS을 이용하여 구현해 보도록 하겠습니다. 코드들은 앞의 강좌에서 소개한 코드들과 거이 차이가 없고 간단하니 별도의 설명은 하지 않겠습니다.

<?
require_once "XML/RSS.php";

$rss =& new XML_RSS("http://www.ihelpers.co.kr/rss.php?q=all");
$rss->parse();

echo "<pre>";
print_r($rss->getStructure());
print_r($rss->getChannelInfo());
print_r($rss->getItems());
echo "</pre>";
?>

[ demopear.php ]

<?
require_once "XML/RSS.php";

$url = $HTTP_GET_VARS["URL"];

$rss =& new XML_RSS("http://www.ihelpers.co.kr/rss.php?q=all");
$rss->parse();


echo "<html><head><title>Simple RSS Reader</title>
";
echo "<style><!-- BODY,TD,SELECT { FONT: 9pt Arial; LINE-HEIGHT: 17px;} //--></style>
";
echo "<body><form>RSS URL : <input type=text name=URL value="$url" size=70> ";
echo "<input type=submit value="?">
";
echo "<hr>
";
echo "</form>
";

if(!empty($url)){
	$channel = $rss->getChannelInfo();
	while (list($key, $value) = each ($channel)) {
		echo "<li>$key => $value</li>
";
	}

	echo "<p><table width=100%>";
	$count = 0;
	foreach($rss->getItems() as $items){
		
		if($count == 0){
			echo "<tr>";
			while (list($key, $value) = each ($items)) {
				printf("<td bgcolor="#EEEEEE">%s</td>
",$key);
			}
			echo "</tr>";
		}

		echo "<tr>";
		while (list($key, $value) = each ($items)) {
			printf("<td bgcolor="#F7F7F7">%s</td>
",$value);
		}
		echo "</tr>";
		
		$count++;
	}
	echo "</table>";
}
echo "</body></html>
";
?>

[ pearreader.php ]

3. 소스코드

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 백성용 헬로우보이