※ 지난 시간에 했던 내용 중 상단 내용만 그대로 가져다 쓰겠습니다.
// 스누피 인클루드 (경로 주의 하세요) include_once './insert/Snoopy.class.php'; // 스누피 객체 생성 $snoopy = new snoopy; // fetch를 이용하여 스누피 객체에 빗썸 API의 모든 내용 담기 $snoopy -> fetch("https://api.bithumb.com/public/ticker/all"); // 담은 값을 $result 객체에 담기 $result = $snoopy->results;
위의 내용에 추가로 해야 할 작업은 $result 객체에 담겨있는 api 전체 내용 중 필요한 가격 부분과 거래량 부분을 추출 해야 하는 부분입니다.
먼저 빗썸 API 링크로 들어 가보시면 아래처럼 BTC 부터 EOS 까지 최근 거래내역을 보실 수 있습니다.
(그 중 BTC 만 예시로 가져왔습니다.)
"BTC":{"opening_price":"11502000","closing_price":"11240000","min_price":"10950000","max_price":"11565000","average_price":"11306739.6560","units_traded":"6984.75602934","volume_1day":"6984.75602934","volume_7day":"72123.92432754","buy_price":"11231000","sell_price":"11254000"}
위의 내용 중 표로 만들 최근가격(closing_price), 하루 거래량(volume_1day) 에 해당하는 내용을 가져오겠습니다.
추출 하기 위해서 preg_match_all 이라는 php 함수를 사용 하였습니다.
// $price 변수에 closing_price 와 "main_price 사이의 가격을 반복으로 담기 preg_match_all("|closing_price\":\"(.*)\",\"min_price\"|U", $result, $price, PREG_SET_ORDER); // $volume 변수에 volume_1day 와 "volume_7day 사이의 가격을 반복으로 담기 preg_match_all("|volume_1day\":\"(.*)\",\"volume_7day\"|U", $result, $volume, PREG_SET_ORDER);
1. closing_price에 해당하는 숫자값 을 가지고 오기 위해선 앞뒤 단어를 알아야 합니다.
ex) "closing_price":"11240000","min_price"
11240000 가격만 추출 하기 위해서 preg_match_all 함수 안에 (.*) 앞뒤로 "closing_price":" 와 ","min_price" 를 넣었습니다.
※ (.*) 값은 앞단어와 뒷단어 사이의 모든 값 이라는 표현입니다.
함수 안의 따옴표(") 앞에 \ 표시는 따옴표를 특수문자로 사용하기 위함입니다.
위와 같이 적용하면 $price 변수에는 closing_price 의 값이, $volume 변수에는 volume_1day 의 값이 2차 배열로 들어가게 됩니다.
$price 변수와 $volume 변수를 출력을 해보면 아래와 같이 나옵니다.
echo '$price[0][0] : '.$price[0][0]; echo '$price[0][1] : '.$price[0][1];
↓ 출력화면
$price[0][0] 배열에는 앞뒤 단어 포함 되어 들어가고, $price[0][1] 배열에는 앞뒤 단어 제거 후 금액 값만 들어가는 것을 확인 하실 수 있습니다.
저희가 원하는 값은 앞뒤 단어가 없어야 하기 때문에 $price[0][1] 를 사용하여 표를 만들도록 하겠습니다.
preg_match_all 이라는 함수는 설정해 둔 값이 반복 된다면 배열에 계속 들어가게 되어있습니다.
그러므로 $price[0][1] 값은 BTC 최근가격, $price[1][1] 에는 이더리움 최근가격 ..... 해서 $price[11][1] 에는 EOS 까지 총 12개가 들어있습니다.
그럼 $price[0][1] 배열을 반복문을 사용하여 값을 출력 해 보겠습니다.
// 증가하는 변수 $int 생성 $int = 0; // $price 배열의 갯수보다 적은만큼만 반복 while($int < count($price)){ // 출력 echo $price[$int][1]; // 출력 후 $int 값 1 증가 $int++; }
↓ 출력화면
잘 나오고 있습니다. 그럼 마지막으로 $price 와 $volume 값으로 표를 만들어 보도록 하겠습니다. (HTML table 을 사용하여 나타내었습니다.)
// 증가하는 변수 $int 생성 $int = 0; // 코인명 $coin 배열에 저장(순서에 맞게) $coin = array('BTC', 'ETH', 'DASH', 'LTC', 'ETC', 'XRP', 'BCH', 'XMR', 'ZEC', 'QTUM', 'BTG', 'EOS'); // 테이블 생성(HTML) echo ""; // $price 배열의 갯수보다 적은만큼만 반복 while($int < count($price)){ // 출력 echo ""; // 출력 후 $int 값 1 증가 $int++; } // 테이블 종료 echo "
coin | price | volume |
---|---|---|
".$coin[$int]." | ".$price[$int][1]." | ".$volume[$int][1]." |
↓ 최종 출력화면
'암호화폐(Cryptocurrency)' 카테고리의 다른 글
POS 코인 (Proof of Stake) 웹에서 쉽게 채굴 하기 (simple pos pool 이용하기) (0) | 2018.04.22 |
---|---|
네오(neo) 코인으로 가스(neo gas) 채굴(staking) 하기 (0) | 2018.03.14 |
네오(neo), 퀀텀(qtum) 등등 PC Wallet 설치 시 Windows PC 보호로 인해 설치가 안될 때 (0) | 2018.03.14 |
스누피 (snoopy) 를 활용 하여 코인 거래소 API 가져 오기(크롤링, 파싱) (0) | 2018.01.31 |
비트코인 등 (암호화폐, Cryptocurrency) 거래소 별 최신 거래내역 API 사이트 링크 (0) | 2018.01.30 |