XML네이버뉴스 긇어오기(영구) Utf-8 ->Euc-kr 변환 정보
XML네이버뉴스 긇어오기(영구) Utf-8 ->Euc-kr 변환
본문
PHP 버전 5이상에서 작동하는 것으로알고 있습니다.
네이버openAPI가 아니구요.
네이버뉴스 검색하면 RSS가 만들어지는데 XML문서를 뽑아서 출력합니다.
검색어만 바꾸면 다양하게 할수 있어요
네이버xml이 UTF-8환경이라 euc-kr에서 한글이 안들어가서 euc-kr로 변환 하는것까지넣었습니다. 왜냐하면 euc-kr이 짱이기때문입니다.
저작권위반도 아니니 마음놓고 쓰셔두됩니다.
테스트링크
----------------------------------------------
http://58.146.212.151/news.php?sidemenu=news
----------------------------------------------
테스트 개인섭이라 접속이 안될수도있떠염
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//euckr로 변환
function change_to_utf($utfStr) {
if (iconv("UTF-8","UTF-8",$utfStr) == $utfStr) {
return $utfStr;
}
else {
return iconv("EUC-KR","UTF-8",$utfStr);
}
}
# UTF => EUC-KR로 변환
function iconv_to_euc_kr($get_data) {
$work_unit = 50;
$init_size = strlen($get_data);
$result_data = "";
$count = 0;
for ( $i = 0 ; $i < $init_size ; $i++ ) {
$cur_char = substr($get_data,$i,1);
$t = ord($cur_char);
if ( $t == 9 || $t == 10 || (32 <= $t && $t <= 126) ) {
$tn = 1;
}
else if ( 194 <= $t && $t <= 223 ) {
$tn = 2;
}
else if ( 224 <= $t && $t < 239 ) {
$tn = 3;
}
else if ( 240 <= $t && $t <= 247 ) {
$tn = 4;
}
else if ( 248 <= $t && $t <= 251 ) {
$tn = 5;
}
else if ( $t == 252 || $t == 253 ) {
$tn = 6;
}
else {
$tn = 1;
}
if ( $work_unit < $tn ) {
break;
}
if ( $count + $tn > $work_unit ) {
$temp_data = iconv("utf-8","euc-kr",$work_string);
$result_data .= $temp_data;
$work_string = "";
$i--;
$count = 0;
}
else {
for ( $j = 0 ; $j < $tn ; $j++ ) {
$work_string .= $cur_char;
$i++;
$count++;
$cur_char = substr($get_data,$i,1);
}
$i--;
}
}
if ( $work_string ) {
$temp_data = iconv("utf-8","euc-kr",$work_string);
$result_data .= $temp_data;
}
return $result_data;
}
//$query = change_to_utf($query);
$test = change_to_utf($test);
if(!$start||$start<1)$start=1;
$rss = file_get_contents("http://newssearch.naver.com/search.naver?where=rss&query=스타크래프트2&qt=&start=$start&pd=-1&ds=1997-01-01&de=2008-02-23&news=&category=&field=-1&sort=0&photo=-1&sim=0&title=-1&ntype=0&ctype=0&xc=&h=0&cat=");
$xml = new SimpleXMLElement($rss);
echo"<table width=100% cellspacing=4>";
$i=0;
foreach($xml->channel[0]->item as $item)
{
if($i>= 10)break;
//uft -> euckr 변환
$item_title=cut_str(iconv_to_euc_kr($item->title),56);
$item_title=str_replace("<b>","",$item_title);
$item_title=str_replace("</b>","",$item_title);
$item_description=iconv_to_euc_kr($item->description);
$author=iconv_to_euc_kr($item->author);
echo "<tr><td height=10><a href='".$item->link."'target=_blank>".$item_title."</a></td></tr> ";
//echo $item_description;
//echo "<br><br>";
$i++;
}
?>
</table>
1