rss 가져오기 소스에서 최근글만 ? 채택완료
안녕 하세요
이곳 팁에 공개된 아래소스를 이용해서
구글에서 글을 퍼오는데요
몇달전꺼 한참전꺼도 퍼와서 뿌려주거든요
만일 뉴스를 가져온다 치면
아베 죽은지 한참 됫는데
아베 총리 업무수행 기사를 가져와 뿌려 줍니다
웃기잔아요 ㅠㅠ
ㅡㅡㅡㅡㅡㅡㅡㅡ
그래서 예를들면
현재부터 3일전글 까지만 퍼오기
ㅡㅡㅡㅡㅡㅡㅡㅡ
이런식으로 하려면 어떻게 해야 하는지
고수님들 조언과 소스좀 알려 주십시요
부탁 드립니다
감사 합니다
<?php
define('_INDEX_', true);
include_once('./_common.php');
//ver1.0 150417 @_untitle_d
function insert_write($newpost)
{
global $g5;
//게시판 테이블 정보
$bo_table = $newpost[bo_table];
if(!strlen($bo_table)) return FALSE; //bo_table 값이 지정되지 않았습니다.
$board = sql_fetch(" select * from {$g5['board_table']} where bo_table = '$bo_table' ");
if(!$board) return FALSE; //bo_table이 존재하지 않습니다.
//회원정보 및 권한 확인
$member = get_member($newpost[mb_id]);
if(!$member) return FALSE; //mb_id가 존재하지 않습니다.
//if($board[bo_write_level] > $member[mb_level]) return FALSE; //글쓰기 권한이 없습니다.
//카테고리 설정
$ca_name = $newpost[ca_name];
if ($ca_name && strpos($board[bo_category_list], $ca_name) === FALSE){
$category_list = $board[bo_category_list]."|".$ca_name;
$sql = " update {$g5['board_table']} set bo_category_list = '$category_list' where bo_table = '$bo_table' ";
sql_query($sql);
}
//변수 정리
$write_table = $g5[write_prefix].$bo_table;
$wr_num = get_next_num($write_table);
$ca_name = addslashes($ca_name);
$html = "html1";
$secret = "";
$mail = "";
$wr_subject = addslashes(trim($newpost[wr_subject]));
$wr_content = addslashes(trim($newpost[wr_content]));
if(!$wr_subject) return FALSE; //글 제목이 없습니다.
if(!$wr_content) return FALSE; //글 내용이 없습니다.
$mb_id = $member[mb_id];
$wr_password = $member[mb_password];
$wr_name = $board[bo_use_name] ? $member[mb_name] : $member[mb_nick];
$wr_email = $member[mb_email];
$wr_homepage = $member[mb_homepage];
for($i=1; $i<=10; $i++){
$wr = "wr_{$i}";
${$wr} = addslashes($newpost[$wr]);
}
$wr_link1 = $newpost[wr_link1];
$wr_link2 = $newpost[wr_link2];
//글 입력하기
$sql = " insert into $write_table
set wr_num = '$wr_num',
wr_reply = '',
wr_comment = 0,
ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_link1 = '$wr_link1',
wr_link2 = '$wr_link2',
wr_link1_hit = 0,
wr_link2_hit = 0,
wr_hit = 0,
wr_good = 0,
wr_nogood = 0,
mb_id = '$mb_id',
wr_password = '$wr_password',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_datetime = '".G5_TIME_YMDHIS."',
wr_last = '".G5_TIME_YMDHIS."',
wr_ip = '{$_SERVER['REMOTE_ADDR']}',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10 = '$wr_10' ";
sql_query($sql);
$wr_id = mysql_insert_id();
sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' "); //부모 아이디에 UPDATE
sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '{$bo_table}', '{$wr_id}', '{$wr_id}', '".G5_TIME_YMDHIS."', '$mb_id' ) "); //새글 INSERT
sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}' "); //게시글 1 증가
//return array('bo_table' => $bo_table, 'wr_id' => $wr_id, 'sca' => $ca_name);
return TRUE;
}
$bo_table = 'blog'; //게시판 테이블
$write_table = $g5[write_prefix].$bo_table;
$url = 'http://blog.rss.naver.com/hosi1030.xml'; //RSS
require "lib/Snoopy.class.php";
ini_set("allow_url_fopen","1");
$snoopy = new Snoopy;
$snoopy->fetch($url);
$xml = @simplexml_load_string($snoopy->results);
foreach($xml->channel->item as $item) {
$sql = "select count(*) as cnt from $write_table where wr_link1 = '".$item->link."' and wr_is_comment = 0";
$row = sql_fetch($sql);
if ($row['cnt'] == 0){
$newpost = array(
'mb_id' => 'admin',
'bo_table' => $bo_table,
'wr_subject' => $item->title,
'wr_content' => $item->description,
);
insert_write($newpost);
}
}
?>
<a href="<?=G5_BBS_URL?>/board.php?bo_table=<?=$bo_table?>">결과보기</a>
답변 4개
답변에 대한 댓글 3개
넘 열정적 으로 도움 주셧는데
이리저리 몇시간째 해봐도 잘 안되네요 ㅜㅜ
포기 해야되나 봅니다 ㅠ
제가 워낙 초보이다 보니
님 열정적 도움에도 부흥치 못하고
죄송 합니다 ㅠㅠ
감사 합니다
다른소스 인데
이건 날짜를 불러오는 코드가 잇는것 같아서
조금 수월해 보이네요
소스코드 입니다
<meta charset="utf-8">
<?php
define('_INDEX_', true);
include_once('./_common.php');
if(isset($_GET['rss'])){
include "lib/Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetch("rss 주소"); //★★ 끌어올 RSS 주소 입력
$table = "게시판 테이블"; //★★ 입력할 테이블 이름 입력
$xml = @simplexml_load_string($snoopy->results);
foreach ($xml->channel->item as $key) {
$xml2[]=$key ;
}
$xml = array_reverse($xml2);
$all_data=0; //불러온 테이터 갯수 초기화
$sec_data=0; //DB에 입력한 데이터 갯수 초기화
$wrnum=sql_fetch_array(sql_query("SELECT * FROM `g5_write_".$table."` order by `wr_num`"));
if($wrnum['wr_num']==""){
$wrnum['wr_num']= -1;
}else{
$wrnum['wr_num']=$wrnum['wr_num']+1;
}
/*
$wrid=sql_fetch_array(sql_query("SELECT * FROM `g5_write_".$table."` order by `wr_id`"));
if($wrid['wr_id']==""){
$wrid['wr_id']= 1;
}
*/
foreach($xml as $item) {
$all_data=$all_data+1;
$chklink_sql="SELECT * FROM `g5_write_".$table."` WHERE `wr_link1`='".$item->link."'"; //이미 불러왔었던 포스팅 인지 확인 -질의문
$chk_q=sql_query($chklink_sql); //이미 불러왔었던 포스팅 인지 확인 -질의문 쿼리
if($chk_q->num_rows<1){ //검색결과 합이 1건 이하일때만 db에 입력
$trans = array("'" => "\""); //내용중 기호 ' 가 있으면 " 로 변환 시킴 변환하지 한다고 정의 .
$contt = strtr($item->description, $trans); //내용중 기호 ' 가 있으면 " 로 변환 시킴.
$str_date = $item->pubDate; // 날자 포맷 할거임
$date = date("Y-m-d H:t:s", strtotime( $str_date ) ); //Wed, 30 Sep 2015 11:48:17 +0900 => 1900-01-01 12:00:00 이런식으로
$sql="INSERT INTO `g5_write_".$table."` (
`wr_num` ,
`wr_option` ,
`wr_name` ,
`wr_subject` ,
`wr_content` ,
`wr_link1` ,
`wr_hit` ,
`wr_datetime`
)
VALUES ('".$wrnum['wr_num']."','html1','".알리미."','".$item->title."', '".$contt."', '".$item->link."','".RAND(10,20)."', '".G5_TIME_YMDHIS."'
)";
if(sql_query($sql)){
$wr_id = sql_insert_id();
sql_query("update `g5_write_".$table."` set wr_parent = '".$wr_id."' ,wr_num = '".-$wr_id."' where wr_id = '".$wr_id."' "); //wr_parent update
sql_query("insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '".$table."', '".$wr_id."', '".$wr_id."', '".G5_TIME_YMDHIS."', '".$item->author."' ) "); //new
sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '".$table."' "); //write_count ++
$sec_data=$sec_data+1;
$wrnum['wr_num'] = $wrnum['wr_num']-1 ;
/*$wrid['wr_id'] = $wrid['wr_id']+1 ;*/
};
}
}
echo $msg = "총 불러온 포스팅 [".$all_data."] 건 중 DB에 [".$sec_data."] 건 입력 하였습니다. ";
echo "<br>";
echo " <a href='".G5_BBS_URL."/board.php?bo_table=".$table."'>게시판으로 가기</a>";
}else{
echo "<a href='?rss=get'>포스팅 가져오기</a>";
}
?>
댓글을 작성하려면 로그인이 필요합니다.
두분 답변 정말 감사 합니다
그런대 두분꺼 다 에레 나네요 ㅠㅠ
죄송 합니다
한번 살펴봐 주세요
'wr_date' => $item->pubDate
이거 추가 햇고요
//게시판 테이블 정보
$bo_table = $newpost[bo_table];
if(!strlen($bo_table)) return FALSE; //bo_table 값이 지정되지 않았습니다.
$board = sql_fetch(" select * from {$g5['board_table']} where bo_table = '$bo_table' ");
if(!$board) return FALSE; //bo_table이 존재하지 않습니다.
//날짜 체크
$bo_date = strtotime($newpost[wr_date]);
if($bo_date < time() - 86400*3) continue;
//회원정보 및 권한 확인
이렇게 추가 햇습니다
eye 님 소스
http://www.newst.kr/prsstest.php
BK님 소스
http://www.newst.kr/pprsstest.php
21번째줄 에러 뜨는데
소스코드 는
$bo_date = strtotime($newpost[wr_date]);
답변에 대한 댓글 1개
이렇게 추가해서.. 날짜값이 잘 넘어오는지 확인해야합니다.
안넘어온다면, 아래 부분의 문제입니다.
'wr_date' => $item->pubDate
댓글을 작성하려면 로그인이 필요합니다.
1. 불러오는 부분 추가해주고,
$newpost = array(
'mb_id' => 'admin',
'bo_table' => $bo_table,
'wr_subject' => $item->title,
'wr_content' => $item->description,
'wr_date' => $item->pubDate
);
2. 받아서 처리하는 함수 부분에 조건식을 추가하면 됩니다.
//날짜 체크
$bo_date = strtotime($newpost[wr_date]);
if($bo_date < time() - 86400*3) continue;
답변에 대한 댓글 5개
시도 해보고 결과 말씀 드리겟습니다
제가 워낙 초본라서 ㅠㅠ
//날짜 체크
$bo_date = strtotime($newpost[wr_date]);
if($bo_date < time() - 86400*3) continue;
이거 어디쯤 추가해야 하는지요?
죄송 합니다 ㅜ
{
global $g5;
$bo_date = strtotime($newpost[wr_date]);
if($bo_date < time() - 86400*3) return false;
에러 나는데요 ㅠ
eye 님 소스
http://www.newst.kr/prsstest.php
BK님 소스
http://www.newst.kr/pprsstest.php
{
global $g5;
$bo_date = strtotime($newpost[wr_date]);
if($bo_date < time() - 86400*3) { return false; }
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
암튼 날짜정보 와 함께
이런식 으로 긁어 옴니다
target="_blank">[속보]확진 2만6299명 '더블링'…12주만에 월요일 최다</a> <font color="#6f6f6f">뉴시스</font></description>
<source url="https://www.newsis.com">뉴시스</source>
</item>
<item>
<title>[속보] 권성동, 장제원의 정면 비판에 “겸허히 수용” - 조선비즈 - 조선비즈</title>
<link>https://biz.chosun.com/policy/politics/2022/07/18/M7UW5O2GUBERTG3PIMJMOXT46M/</link>
<guid isPermaLink="false">CBMiTWh0dHBzOi8vYml6LmNob3N1bi5jb20vcG9saWN5L3BvbGl0aWNzLzIwMjIvMDcvMTgvTTdVVzVPMkdVQkVSVEczUElNSk1PWFQ0Nk0v0gFcaHR0cHM6Ly9iaXouY2hvc3VuLmNvbS9wb2xpY3kvcG9saXRpY3MvMjAyMi8wNy8xOC9NN1VXNU8yR1VCRVJURzNQSU1KTU9YVDQ2TS8_b3V0cHV0VHlwZT1hbXA</guid>
<pubDate>Mon, 18 Jul 2022 00:44:00 GMT</pubDate>
<description><a href="https://biz.chosun.com/policy/politics/2022/07/18/M7UW5O2GUBERTG3PIMJMOXT46M/" target="_blank">[속보] 권성동, 장제원의 정면 비판에 “겸허히 수용” - 조선비즈</a> <font color="#6f6f6f">조선비즈</font></description>
<source url="https://biz.chosun.com">조선비즈</source>
</item>
<item>
<title>[속보] 대통령실 “인하대 강간치사 사건, 비통한 일” - 조선비즈 - 조선비즈</title>
<link>https://biz.chosun.com/policy/politics/2022/07/17/3SNSNFMP2BHS7O65T4GRXEY6W4/</link>
<guid isPermaLink="
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
여기 첨부가 안되서 아래 딥글로 rss 정보 펑퍼오는거 이미지 올립니다