rss를 불러오지 못하는 원인? 해결방법?
본문
<?php
$rssdata = simplexml_load_file("https://bigroof.jp/feed/");
$num_of_data = 3;
$outdata = "";
for ($i=0; $i<$num_of_data; $i++){
$entry = $rssdata->channel->item[$i];
$date = date("Y.m.d", strtotime($entry->pubDate));
$title = $entry->title;
$link = $entry->link;
$outdata .= '<li>' . '<time>' . $date. '</time>';
$outdata .= '<a target="_blank" href="' . $link . '"><p>' . $title . '</p></a></li>';
}
echo '<ul>' . $outdata . '</ul>';
?>
위와같은 코드를 이용해서 rss를 불러오고 있는데요,
어떤 페이지가 불러오기를 자꾸 실패하는데 뭐가 문제일까요ㅠ ㅠ ..
요기의 rss인데요.... 이 사이트 자체의 문제인지...
혹시 위의 php형식 외에 다른 방식으로 최신기사를 3건 불러오려면
다른 어떤 방법이 있을까요?
읽어주셔서 감사합니다.
!-->
답변 3
찍어보니깐, dc:date를 못가져오네요.
간단하게 처리하면 아래 방식으로 하시면 됩니다.
$rssdata = get_contents("http://naganumacc.jp/blog/index.php/rss");
$rssdata = str_replace('dc:date', 'pubDate', $rssdata);
$rssdata = simplexml_load_string($rssdata);
$num_of_data = 3;
$outdata = "";
for ($i=0; $i<$num_of_data; $i++){
$entry = $rssdata->item[$i];
$date = date("Y.m.d", strtotime($entry->pubDate));
$title = $entry->title;
$link = $entry->link;
$outdata .= '<li>' . '<time>' . $date. '</time>';
$outdata .= '<a target="_blank" href="' . $link . '"><p>' . $title . '</p></a></li>';
}
echo '<ul>' . $outdata . '</ul>';
function get_contents($url) {
$agent = 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)';
$curlsession = curl_init();
curl_setopt ($curlsession, CURLOPT_URL, $url);
curl_setopt ($curlsession, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt ($curlsession, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($curlsession, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curlsession, CURLOPT_HEADER, 0);
curl_setopt ($curlsession, CURLOPT_POST, 0);
curl_setopt ($curlsession, CURLOPT_USERAGENT, $agent);
curl_setopt ($curlsession, CURLOPT_REFERER, "");
curl_setopt ($curlsession, CURLOPT_TIMEOUT, 3);
$buffer = curl_exec ($curlsession);
$cinfo = curl_getinfo($curlsession);
curl_close($curlsession);
if ($cinfo['http_code'] != 200) {
return "";
}
return $buffer;
}
curl로 페이지를 긁은 다음 dc:date를 pubDate로 치환하고 작업. 머 요런 꼼수랄까요.
!-->rss 1.0 규격이랑 2.0 규격이 있는데 해당 소스는 2.0 에 맞춰서 작성되어있습니다.
1.0 규격
http://web.resource.org/rss/1.0/spec
2.0 규격
http://www.rssboard.org/rss-specification
$entry = $rssdata->item[$i];
답변을 작성하시기 전에 로그인 해주세요.