▣중-고급자 활용/그게 궁금해?

[RSS] Really Simple Syndication 활용-PHP

횡재수 2008. 7. 22. 21:01

블로그에 글을 홈페이지에 불러올때 사용합니다.
RSS를 이용하여 최근게시물을 불러옵니다.



 

소스 닫기

//Soket Function
function geturl($host,$path) {
$contents="";
$fp = @fsockopen($host, 80, &$errno, &$errstr, 5);
if($fp) {
// 소켓을 이용해서 서버에 html 형태로 테이타를 보냄
fputs ($fp, "GET $path HTTP/1.0nUser-Agent: Mozilla/4.0nHost: $hostnn");

while(!feof($fp)) {
$contents .= fgets($fp,1024);
}
fclose($fp);

return $contents;
}
}

// 내용만 뽑아내기
function parseTag($tag,$value){
$value = explode("",$value);
$value = explode("<".$tag.">",$value[0]);
return $value[1];
}

//한글 자르기
function hstrCut($msg,$cut_size,$end_str = "...") {
if( (strlen($msg) > $cut_size) & ($cut_size > 0) ) {
$msg = substr($msg,0,$cut_size);
$msg = preg_replace("/(([x80-xFE].)*)[x80-xFE]?$/","1",$msg);
$msg .= $end_str;
}
return $msg;
}

// 보여지는 부분
function RSS_reader($count,$url,$path,$encode = "EUC-KR"){
$htmls=geturl($url, $path);
$htmls = trim(substr($htmls,strpos($htmls, "rnrn")));
$channel = parseTag("channel",$htmls);
// 인코딩 변환
if($encode == "UTF-8"){
$channel = iconv("UTF-8","EUC-KR",$channel);
}
$channel = str_replace("","",$channel);
$item = explode("",$channel);
// 제목 처리
$siteTitle = parseTag("title",$item[0]);
$siteLink = parseTag("link",$item[0]);
$siteDescription = parseTag("description",$item[0]);

//제목 출력
$html = "[$siteTitle]
";

//각 게시물 제목 처리
for($i=1;$i<=$count;$i++){
if(!isset($item["$i"])) break;
$category=parseTag("category",$item[$i]);
//제목 가져오기
$title = hstrCut(parseTag("title",$item[$i]),50);
//링크 가져오기
$link = parseTag("link",$item[$i]);
//내용 가져오기
$description = parseTag("description",$item[0]);

$html .= "$title
";
}

// 출력
echo $html;

}
// EX : RSS_reader(불러올갯수,"도메인","불러올파일");
RSS_reader(7,"xxxxx.com","/xxx.php");

?>