PHP & Others

PHP로 RSS를 간단히 만들기

컨텐츠 정보

본문

나같은 노땅 코더에게 뜬금없이 떨어진 RSS ~~

PHP 로 되어 있는 게시판에 RSS를 달고 싶단다.....그래서 관련문서를 찾아봤다~

@.@ 졸~ 어....어렵다!! (망했군~)

암튼 어렵게 살고 싶지 않아서 쉽게 정리해본다~~ 나의 믿지 못할 기억력을 위하여~~

<?

header("Content-Type: application/rss+xml");
header('Content-Type: text/xml');

$now = date("D, d M Y H:i:s T"); // 시간 지정 (현재시간 단위~ )

echo "

// 머리부분 ~ 한번만 정의하면 된다

<?xml version=\"1.0\" encoding=\"euc-kr\"?>
    <rss version=\"2.0\">
        <channel>
        <title>제목 되시겠다</title>
        <link>링크주소를 써넣자</link>
        <description>간단한 설명글을 넣자</description>
        <language>ko</language>
        <pubDate>$now</pubDate> // XML이 만들어진 시간을 입력한다.
        <lastBuildDate>$now</lastBuildDate>
        <docs>걍 난 링크를 넣었다</docs>
        <managingEditor>이멜@주소</managingEditor>
        <webMaster>이멜@주소</webMaster>";


while (조건문... 어쩌고 저쩌고)
{

// 아이템 부분만 반목문으로 돌려주면 된다.
// 변수 부분은 개발자 마음대로 정의해서 사용하시길~

$name        = "작성자";
$use_type   = "카테고리";
$subject      = "제목";
$link           = "www.도메인.co.kr/페이지.php?변수1=변수값&amp;변수2=변수값2";
$Date          = date('r', strtotime($날짜컬럼)); //주로 아이템이 갱신된 날짜를 입력한다.
$descript     = "간단한 설명글을 넣는다~ 게시판이라면 본문의 일부를 넣어도 되고~"; 

참고로 XML 에서 예약문자는

< (less-than sign)      ==> &lt;
> (greater-than sign)  ==> &gt;
& (ampersand)          ==> &amp;

식으로 표현을 해줘야 한다.

그런데 일일이 예약문자를 파싱하기 번거롭다.
다행히 PHP는 htmlentities라는 함수로 처리가 가능하다.

참고로 한글이 들어가 있는 경우라면 htmlspecialchars 로 처리하고
읽는쪽에서 UTF-8의 경우 iconv 를 이용하여 변환하여 주면 된다.

echo "
        <item>
        <author>".$name."</author>
        <category>".$use_type."</category>
        <title>".$subject."</title>
        <link>".htmlentities($link)."</link>
        <guid>".htmlentities($link)."</guid>
        <pubDate>".$Date."</pubDate>
        <description>".$descript."</description>
        </item>";

}

//채널과  rss 정의를 마무리...

echo "</channel>
         </rss>";

참고로 아래 그림처럼 부라우져에서 RSS 피드 아이콘이 보이게 하려면


<head> 와 </head> 사이에

<link rel ="alternate" type="application/rss+xml" href="RSS 링크주소" title="제목" />

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
내일 일은 내일 생각하고, 오늘은 오늘을 위해 최선을 다하라. 그것은 오늘이 곧 내일을 위한 준비이기 때문이다.