Programming/PHP / / 2020. 5. 12. 17:29

json_decode를 해도 값이 안 나올 때...

728x90

<?php
header('Content-Type: text/html; charset=UTF-8');
$ch = curl_init();
$url = "https://dapi.kakao.com/v2/local/search/address.json?query=".urlencode("여긴 주소!");
$headers[] = "Authorization: KakaoAK xxxxxxx여긴 토큰xxxxxxxx";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
$response = json_decode($output);
print_r($response);

주소를 토대로 위도와 경도를 갖고 오는 api를 사용하는 예제(developers.kakao.com/docs/latest/ko/local/dev-guide#address-coord)입니다.

위에 있는 아주 평범한 방법으로 했지만 값이 안 나옵니다.

그런데 print_r($output)은 값이 나옵니다. 다만 값이 나오지만 위 이미지처럼 갖고 가지 말라고 헤더까지 포함시켜서 저렇게 나옵니다.

이런 경우는 헤더만 잘라 버리고 갖고 오면 됩니다.

<?php
header('Content-Type: text/html; charset=UTF-8');
$ch = curl_init();
$url = "https://dapi.kakao.com/v2/local/search/address.json?query=".urlencode("여긴 주소!");
$headers[] = "Authorization: KakaoAK xxxxxxx여긴 토큰xxxxxxxx";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
curl_close($ch);
$remove_result = substr($output, $header_size);
$result = json_decode($remove_result);
print_r($result);
echo $result->documents[0]->x;

$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);

$remove_result = substr($output, $header_size);

먼저 헤더 길이를 갖고 와서 출력된 결과물에서 헤더 길이만큼을 잘라 버리면 됩니다.

 

반응형

'Programming > PHP' 카테고리의 다른 글

한글로 요일 표기하기  (0) 2020.07.29
[정규표현식]문자열에서 숫자만 추출하기  (0) 2020.05.28
해당 URL이 정상인지 체크  (0) 2020.04.21
문자열 랜덤으로...  (0) 2020.04.20
위, 아래 br 제거  (0) 2020.03.13