snoopy->fetch 스누피 클래스 웹페이지 긁어서 가공하는 예제
스누피 클래스를 사용하여 웹페이지를 긁어오는 php 예제입니다.
완벽한 소스는 아니며, 여기에서 참고하여 어떻게 소스를 가공하여 만들어지는 과정을 보면서
자기것으로 만들어볼 수 있습니다.
// 주소 읽어오기
$snoopy = new Snoopy;
$snoopy->fetch("http://www.도메인/bbs/board.php?bid=notice");
$file = $snoopy->results;
// 앞뒤 자르기
$file=explode("공지사항 출력부분",$file);
$file=$file[1];
$file=explode("페이징",$file);
$file=$file[0];
// 일차 exp
$ex1=explode("<tr",$file);
for($i=1;$i<sizeof($ex1);$i++)
{
$ex2=explode("</td>",$ex1[$i]);
unset($data);
// 제목 가공
$data[tit]=$ex2[1];
$data[tit]=explode("pageno=1'>",$data[tit]);
$data[tit]=$data[tit][1];
$data[tit]=explode("</a>",$data[tit]);
$data[tit]=$data[tit][0];
$data[tit]=trim($data[tit]);
$data[tit]=html_replace($data[tit]);
// 링크 가공
$data[link]=$ex2[1];
$data[link]=explode("uid",$data[link]);
$data[link]=$data[link][1];
$data[link]=explode("&pageno",$data[link]);
$data[link]=$data[link][0];
$data[link]=str_replace("=","http://www.pksafety.or.kr/bbs/board_view.php?bid=notice&uid=",$data[link]);
// 날자 가공
$data[dat]=$ex2[3];
$data[dat]=explode("\"#777777\">",$data[dat]);
$data[dat]=$data[dat][1];
$data[dat]=explode("</font>",$data[dat]);
$data[dat]=$data[dat][0];
if ($data[link] != null) {
// 내용 가져오기
$snoopy = new Snoopy;
$snoopy->fetch("$data[link]");
$file2 = $snoopy->results;
// 내용 가공
$data[con]=explode("게시물 내용",$file2);
$data[con]=$data[con][1];
$data[con]=substr($data[con],10);
$data[cut]=substr($data[con],-13);
$data[con]=str_replace($data[cut],"",$data[con]);
unset($data[cut]);
// UTF-8 변환
$data[titleu8] = iconv('euc-kr','UTF-8',trim($data[tit]));
$data[descriptionu8] = iconv('euc-kr','UTF-8',trim($data[con]));
echo"
<item>
<title>$data[titleu8]</title>
<link>$data[linkrss]</link>
<description>$data[descriptionu8]</description>
<pubDate>$data[dat]</pubDate>
</item>
";
}
}
저대로 작동하면 순차적으로 RSS를 만들게 됩니다.
저걸 날자순으로 정렬해서 출력하려고 하는데
DB를 사용하지 않고 가능한 방법 없을까요?
php 스쿨의 비혼님의 답변입니다.
array_multisort() 함수를 이용해보세요.
http://php.net/manual/kr/function.array-multisort.php
사용법은 기존 Tip&Tech 게시판에 올려진 글을 참고해보세요.
출처 php스쿨