채택완료

환율 전체 파싱해서 특정 통화만 뿌려 주려면 어떻게 해야 하나요?

2018-11-20 (화) 21:24:38 4,306

환율 전체 파싱해서 특정 통화만 뿌려 주려면 어떻게 해야 하나요?

아래 전체 네이버 환율 데이터 파싱은 되는데, 특정 환율만 뿌려 주고 싶은데, 어떻게 해야 하나요?

<?php

function Ncurrency($items) { 
    $Data = array();
    # 데이터 호출
    $url = 'https://finance.naver.com/marketindex/exchangeList.nhn';
    $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, false);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     $response = curl_exec($ch);
     curl_close($ch);
     if(!$response) return $Data;
     $res = iconv('euc-kr', 'UTF-8', $response); 
 
     # 파싱
     preg_match('#<tbody.*?>.*?</tbody>#s', $res, $tbody); if(!$tbody) return $Data;
     preg_match_all('#<tr.*?>(.*?)</tr>#s', $tbody[0], $tr); if(!$tr) return $Data;
     foreach($tr[1] as $v) {
 
         preg_match_all('#<td.*?>(.*?)</td>#s', $v, $td);  
         $td = $td[1];  
         $td[0] = preg_replace('#^\s+|\s+$#s', '', strip_tags($td[0]));            
         $akey = preg_replace('#[^A-Z]+#s', '', $td[0]); if(!$akey) return $Data;
         for ($i=0; $i<count($items); $i++)  
            $Data[$akey][$items[$i]] = $td[$i];
     }
 
     return $Data;
 }
 $items = array('통화명', '현찰살때', '현찰팔때');
 $Data = Ncurrency($items);

$html = '<table border=1><tr>';
foreach ($items as $v)
    $html  .= "<th>$v</th>";
$html .= '</tr>';
foreach ($Data as $k => $v) {
    $html .= '<tr>';
    foreach ($items as $v1)
        $html .= "<td>{$Data[$k][$v1]}</td>";
    $html .= '</tr>';
}
echo $html . '</table>';
?>

|

답변 3개

채택된 답변
+20 포인트

작성하신 코드 중에 아래 코드 부분에서 분기처리 하시면 될 것 같습니다.

foreach ($Data as $k => $v) {
    $html .= '<tr>';
    foreach ($items as $v1)
        $html .= "<td>{$Data[$k][$v1]}</td>";
    $html .= '</tr>';
}

2018-11-21 (수) 10:37:51

특정 환율 코드만 분기문 생성하여 화면에 뿌려주시면 됩니다.

위에서 하신것과 같습니다.

특정 통화 부분의 소스를 분리해서 다시 재구성 하셔야죠.

위에 하셨다면 충분히 하실 수 있을거 같네요.

답변을 작성하려면 로그인이 필요합니다.