db/mysql

euc-kr xml을 질의 후 utf-8로 출력

C/H 2007. 3. 17. 10:59

$words = ($HTTP_GET_VARS[keyword])?$HTTP_GET_VARS[keyword]:'news';
$ip = "";
$xfip = $_SERVER[REMOTE_ADDR];
$ua = $_SERVER[HTTP_USER_AGENT];

$sponser_url = "http://xml.kr.xxxxx.com/d/search/p/standard/xml/kr/spm2/mods/kk/?Keywords=";
$sponser_url .= urlencode(iconv('utf-8','euc-kr', $words)); // euc-kr 질의
$sponser_url .= "&Partner=xxxxx&maxCount=5&bolding=true&adultFilter=clean&keywordCharEnc=euc-kr";
$sponser_url .= "&outputCharEnc=euc-kr&affilData=ip%3D".urlencode($ip)."xfip%3D".urlencode($xfip)."ua%3D";
$sponser_url .= urlencode($ua);

$recv_data = "";
$fp = fopen($sponser_url, "r") or Die("Fail overture conn!!");
while ($result = @fgets($fp, 1024))
{
  $recv_data .= $result;
}
@fclose($fp);

$s_cnt = 0;
$e_flag = 0;
$s_data = array();

function startElementHandler($parser, $name, $attrs)
{
  global $s_cnt, $s_data, $e_flag;
  
  if ($name == "LISTING")
 {
    $i = 0;
    foreach($attrs as $key => $value)
    {
      $s_data[$s_cnt][$i] = ($i==1 or $i==2)?iconv('euc-kr', 'utf-8', $value):$value;
      // 배열중 1,2의 내용에 한글이 있음으로 iconv를 적용
      $i++;
    }
    $s_cnt++;
  }
  else if ($name == "NEXTARGS")
  {
    $e_flag++;
  }

}

function endElementHandler($parser, $name)
{
}

function characterDataHandler($parser, $data)
{
  global $s_cnt, $s_data, $e_flag;
  
  if (trim($data) && $e_flag == 0)
  {
    $s_data[$s_cnt - 1][4] = $s_data[$s_cnt - 1][4].trim($data);    
  }
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($xml_parser, "characterDataHandler");

if (!@xml_parse($xml_parser, $recv_data, TRUE))
{
  die ("error parsing!!!");
}

xml_parser_free($xml_parser);

print "
";
print_r($s_data);
print "
"; /* End of File */


반응형

'db > mysql' 카테고리의 다른 글

mysql unauthenticated user 프로세스 문제  (0) 2010.08.20
mysql log  (0) 2010.01.27
mysql의 최대 성능 향상 방법  (0) 2006.09.22
MySQL 예제와 성능튜닝  (0) 2006.09.22
mysql 인덱스  (0) 2006.09.22