[파싱] snoopy->fetch 스누피 클래스 웹페이지 긁어서 가공하는 예제 (2012.08.03 02:16)
2016.08.02 12:37
466
0
https://eond.com/378255

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스쿨

라이믹스는 이온디와 함께