네이버에서 제공하는 환율정보를 가져오는 함수 > 자유게시판

자유게시판

네이버에서 제공하는 환율정보를 가져오는 함수 정보

네이버에서 제공하는 환율정보를 가져오는 함수

본문

만들면서 정규식을 배워야겠다는 마음이 간절히 드네요 ㅋㅋ

 


# 네이버 자료에서 환율정보를 얻어온다.
function Ncurrency() {
 
	# 데이터 호출
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'http://info.finance.naver.com/marketindex/exchangeList.nhn');
	curl_setopt($ch, CURLOPT_POST, false);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$response = curl_exec($ch);
	curl_close($ch);
	$res = iconv('euc-kr', 'UTF-8', $response); if(!$response) return 'false';
 
	# 파싱
	preg_match("/<tbody.*?>.*?<\/[\s]*tbody>/s", $res, $tbody); if(!is_array($tbody)) return 'false';
	preg_match_all('`<tr.*?>(.*?)<\/[\s]*tr>`s', $tbody[0], $tr); if(!is_array($tr)) return 'false';
 
	$Data = array();
	foreach($tr[0] as $k=>$v) {
 
		unset($td, $akey);
		preg_match_all('`<td.*?>(.*?)<\/td>`s', $v, $td);
		$td = $td[0];
		$akey = preg_replace('/([\xEA-\xED][\x80-\xBF]{2})+/', '', strip_tags($td[0]));
		$akey = trim(str_replace('JPY (100)', 'JPY', $akey));
		$akey = trim(str_replace(' 100', '', $akey)); if(!$akey) return 'false';
		$Data[$akey]['통화명'] = trim(strip_tags($td[0]));
		$Data[$akey]["매매기준율"] = str_replace(',', '', trim(strip_tags($td[1])));
		$Data[$akey]["현찰살때"] = str_replace(',', '', trim(strip_tags($td[2])));
		$Data[$akey]["현찰팔때"] = str_replace(',', '', trim(strip_tags($td[3])));
		$Data[$akey]["송금보낼때"] = str_replace(',', '', trim(strip_tags($td[4])));
		$Data[$akey]["송금받을때"] = str_replace(',', '', trim(strip_tags($td[5])));
		$Data[$akey]["환가료율"] = str_replace(',', '', trim(strip_tags($td[6])));
		$Data[$akey]["미화환산율"] = str_replace(',', '', trim(strip_tags($td[7])));
	}
 
	return $Data;
}
$Data = Ncurrency();
추천
5

댓글 21개

이것은 상업용으로는 사용이 불가능하겠죠.

네이버도 외환은행에서 돈주고 사용하는것 같던데...
이렇게 줄이는 건 어떤가요?

    # 파싱
    preg_match_all('`<tr.*?>(.*?)<\/[\s]*tr>`s', $res, $tr);
   
    $Data = array();
    foreach($tr[0] as $k=>$v) {
   
        unset($td, $akey);
        preg_match_all('`<td.*?>(.*?)<\/td>`s', $v, $td);
        $td = $td[0];
        $akey = preg_replace('/([\xEA-\xED][\x80-\xBF]{2})+/', '', strip_tags($td[0]));
        $akey = preg_replace('/ \(?100\)?/', '', trim($akey)); if(!$akey) continue;
아 키부분이구나...


원래는 일본만 그런줄알고 간단하게 짜놓은건데 나중에 다른 국가도 몇개 그런것을 확인해서 부랴부랴 수정하다보니 ㅎㅎ
저 또한 파싱 부분은 별도로 빼는게 나을거 같습니다. 해당 함수는 데이터 가져와서 재 배열 정도만 처리하는게 깔끔할 거 같네요
저함수로 파싱된 데이터는 하루에 한번 db에 들어갑니다 ㅎㅎㅎ

아래무래 파싱은 자주하면 안좋다는 생각에 말씀하신 의견에 한표 드립니다!
네이버..아직 까지는
검색엔진에 최강자 이죠..
개구리가 올챙이적 모른다고 전에 생각했었습니다..
중이 고기 맛을 알면.. 더 적으면..길어질거 깉아서 이만..^^

지금도 그 생각에는 변함이 없지요..(유저로서..)..지움..

보세요..

얼마나 비참하게 무너지고 한 순간에 꿈에 대한 추억을 ....................................

잡는 심정으로 달려 가고 s 그룹에게 살려 달라 하겟지만..
오버인지 모르겠지만 아직도 네이버에 줄 서는건 아닌거 같습니다..

네이버 창업자가 누구라고 알고 계시는지요..^^?
최근에 그(네이버) 직원들과 통화 해 보셨나요..^^
알면서 쓸수밖에 없는 현실이 서글프죠 ㅠ.ㅠ

네이버랑은 페이 쪽때문에 하루에 두세번씩 통화하는데 자신이 맡지 않은건 무조건 전화를 돌리더라구요 ㅎㅎ(cs불만... ㅜ..ㅜ)
echo $Data['TWD']['매매기준율'];
처럼 사용 하시면됩니다.

가능한 하루에 한번 저함수로 db에 저장하고 db에서 꺼내오는 식으로 사용하세요 ㅎㅎ
전체 195,054 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

  1. 참여0 회 시작24.03.28 11:15 종료24.04.04 11:15
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT