예전에 만든거 좀더 보안해서
그냥 추가적으로 작성한 내역 공유해 드립니다.
참고항목으로 `네이버 코드` 부분이 있는데
이 부분은 네이버 openAPI 사용시 코드를 발급하셔야 합니다.
1개의 코드에 보낼수 있는 쿼리양이 정해져있어서 그부분을 해결해보고자
코드 2~3개 를 추가발급받으신후 등록하면 무리없으실거에요.

그리고 저번에 정규식 부분에 대해
`\r\n` 로 한건 해당 입력부분안에 대한 내용물중에 , 부분도 있을 경우를 대비한겁니다.
참고로......허접해도....자비좀 부탁드려요..^^

<?

    //################ MB- SKM - 쿠레이지쌩 ###################
    Header("Content-type: text/xml; charset=UTF-8");
    //Header("Content-type: text/html; charset=UTF-8");
    $chart_cnt = 10;
    switch($_GET["fs"]) {
        case "daum" :    
            $fp = fopen("http://img.search.daum-img.net/jumpkeyword/tot.js","r");            
            while(!feof($fp)) {                
                $data=fread($fp,2048);
                $text = iconv("CP949","UTF-8",$data);
                $chart = load_Daum($chart, $text,"K","K");            // 타이틀        
                $chart = load_Daum($chart, $text,"S","S");         // 아이콘설정                
                $chart = load_Daum($chart, $text,"V","V");            // 등업                
            }
            fclose($fp);
            break;        
        default :
            //##################################### 기본 naver
            $chart    = load_Naver("nexearch",10);                         
            //##################################### 기본 naver
            break;
    }
    //print_r($chart);    
    $xml = '<?xml version="1.0" encoding="UTF-8" ?>';
    $xml .= '<root>';
    for($i=0;$i<$chart_cnt;$i++) {
        if(!empty($chart[$i]["K"])) {
            switch($chart[$i]["S"]) {
                case "n"    : $chart_S="http://www.adget.co.kr/_global/_img/chart/new.png";        break;
                case "+"    : $chart_S="http://www.adget.co.kr/_global/_img/chart/up.png";        break;
                case "-"    : $chart_S="http://www.adget.co.kr/_global/_img/chart/down.png";         break;                    
                default    : $chart_S="http://www.adget.co.kr/_global/_img/chart/none.png";        break;
            }
            $xml    .= "<chart>";
            $xml    .= "    <K><![CDATA[".$chart[$i]["K"]."]]></K>";
            $xml    .= "    <S><![CDATA[".$chart_S."]]></S>";
            $xml    .= "    <V><![CDATA[".$chart[$i]["V"]."]]></V>";
            $xml    .= "</chart>";        
        }
    }
    $xml .= '</root>';        
    echo $xml;

//#################################################### 다음용
    function load_Daum($chart, $value,$str,$avalue) {
        preg_match_all("/{$str}:\"(.*?)\r\n/i",$value,$matches);
        for($i=0;$i<sizeof($matches[0]);$i++) {
            $value = $matches[0][$i];                    
            $value = str_replace("{$str}:\"","",$value);
            $value = str_replace("\"","",$value);
            $value = str_replace(",","",$value);
            $value = str_replace("\r\n","",$value);
            $value = trim($value);
            if($str=="S") {
                switch($value) {
                    case "new"    : $value="n";        break;
                    case "++"    : $value="+";        break;
                    case "--"    : $value="-";        break;                    
                    default        : $value="";            break;
                }
            }
            $chart[$i][$avalue] = $value;
        }        
        return $chart;
    }
//#################################################### 다음용

//#################################################### 네이버 API
    function load_Naver($query,$cnt) {                
        $err = "";
        $naver_key = array(
            "네이버 코드1",
            "네이버 코드2",
            "네이버 코드3",
            "네이버 코드4",
            "네이버 코드5");                
        $key = array_rand($naver_key);
        $xmlURL     = "http://openapi.naver.com/search?key={$naver_key[$key]}&query={$query}&target=rank";
        $xmlView = simplexml_load_file($xmlURL);
        for($i=1;$i<=$cnt;$i++) {
            $K     = $xmlView->item->{"R{$i}"}->K;
            $S     = $xmlView->item->{"R{$i}"}->S;
            $V     = $xmlView->item->{"R{$i}"}->V;
            
            switch($S) {
                case "new"    : $S="n";        break;
                case "+"        : $S="+";        break;
                case "-"        : $S="-";        break;                    
                default        : $S="";            break;
            }
            
            if(empty($K) || empty($S) || empty($V))    { $err = "Y"; break; }
            else {
                $chart[] = array(
                    "K"     => $K,
                    "S" => $S,
                    "V"     => $V,
                );
            }
        }
        if($err == "Y" ) $chart = load_Naver($query,$cnt);    
        return $chart;
    }    

    /* load_Naver( A, B );
        // A 입력값
        nexearch    : 통합검색
        cafe            : 카페검색
        blog            : 블로그 검색
        dic                : 사전검색
        image            : 이미지검색
        kin                : 지식iN검색
        music            : 음악검색
        video            : 동영상검색
        webkr            : 웹문서검색
        site            : 사이트검색
        news            : 뉴스검색
        // B 입력값 ( 노출갯수 )
    */
//#################################################### 네이버 API
?>
2010/09/26 23:30 2010/09/26 23:30

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다